solid-hook-form 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/logic/create_errors.d.ts +9 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +147 -128
- package/dist/main.umd.cjs +1 -1
- package/dist/types/errors.d.ts +5 -15
- package/dist/types/form.d.ts +3 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
### Playground
|
|
4
4
|
|
|
5
|
-
[<img width="1171" alt="Screenshot 2025-04-05 at 15 01 47" src="https://github.com/user-attachments/assets/
|
|
5
|
+
[<img width="1171" alt="Screenshot 2025-04-05 at 15 01 47" src="https://github.com/user-attachments/assets/08c8242a-c254-4d80-9de8-278d32615c12" />](https://solid-hook-form.vercel.app/)
|
|
6
6
|
|
|
7
7
|
### Install
|
|
8
8
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FieldError } from '../types/errors';
|
|
2
|
+
import { FormValues } from '../types/form';
|
|
3
|
+
import { Path } from '../types/path';
|
|
4
|
+
export declare const createErrors: <F extends FormValues>() => {
|
|
5
|
+
errors: import('solid-js').Accessor<Partial<Record<Path<F>, FieldError>>>;
|
|
6
|
+
appendError: (name: Path<F>, error: FieldError) => void;
|
|
7
|
+
removeError: (name: Path<F>) => void;
|
|
8
|
+
resetErrors: () => void;
|
|
9
|
+
};
|
package/dist/main.d.ts
CHANGED
package/dist/main.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
const
|
|
2
|
-
equals:
|
|
1
|
+
const Y = (t, e) => t === e, d = {
|
|
2
|
+
equals: Y
|
|
3
3
|
};
|
|
4
|
-
let
|
|
5
|
-
const
|
|
6
|
-
var
|
|
7
|
-
let C = null,
|
|
4
|
+
let Z = H;
|
|
5
|
+
const g = 1, y = 2, $ = {};
|
|
6
|
+
var a = null;
|
|
7
|
+
let C = null, tt = null, l = null, f = null, h = null, S = 0;
|
|
8
8
|
function F(t, e) {
|
|
9
|
-
e = e ? Object.assign({},
|
|
9
|
+
e = e ? Object.assign({}, d, e) : d;
|
|
10
10
|
const r = {
|
|
11
11
|
value: t,
|
|
12
12
|
observers: null,
|
|
13
13
|
observerSlots: null,
|
|
14
14
|
comparator: e.equals || void 0
|
|
15
|
-
}, n = (s) => (typeof s == "function" && (s = s(r.value)),
|
|
16
|
-
return [
|
|
15
|
+
}, n = (s) => (typeof s == "function" && (s = s(r.value)), R(r, s));
|
|
16
|
+
return [P.bind(r), n];
|
|
17
17
|
}
|
|
18
|
-
function
|
|
19
|
-
const n =
|
|
20
|
-
|
|
18
|
+
function et(t, e, r) {
|
|
19
|
+
const n = U(t, e, !1, g);
|
|
20
|
+
A(n);
|
|
21
21
|
}
|
|
22
|
-
function
|
|
23
|
-
r = r ? Object.assign({},
|
|
24
|
-
const n =
|
|
25
|
-
return n.observers = null, n.observerSlots = null, n.comparator = r.equals || void 0,
|
|
22
|
+
function T(t, e, r) {
|
|
23
|
+
r = r ? Object.assign({}, d, r) : d;
|
|
24
|
+
const n = U(t, e, !0, 0);
|
|
25
|
+
return n.observers = null, n.observerSlots = null, n.comparator = r.equals || void 0, A(n), P.bind(n);
|
|
26
26
|
}
|
|
27
|
-
function
|
|
27
|
+
function M(t) {
|
|
28
28
|
if (l === null) return t();
|
|
29
29
|
const e = l;
|
|
30
30
|
l = null;
|
|
@@ -34,31 +34,31 @@ function P(t) {
|
|
|
34
34
|
l = e;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
function
|
|
37
|
+
function rt(t, e) {
|
|
38
38
|
const r = Symbol("context");
|
|
39
39
|
return {
|
|
40
40
|
id: r,
|
|
41
|
-
Provider:
|
|
41
|
+
Provider: ct(r),
|
|
42
42
|
defaultValue: t
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
-
function
|
|
45
|
+
function nt(t) {
|
|
46
46
|
let e;
|
|
47
|
-
return
|
|
47
|
+
return a && a.context && (e = a.context[t.id]) !== void 0 ? e : t.defaultValue;
|
|
48
48
|
}
|
|
49
|
-
function
|
|
50
|
-
const e =
|
|
49
|
+
function st(t) {
|
|
50
|
+
const e = T(t), r = T(() => V(e()));
|
|
51
51
|
return r.toArray = () => {
|
|
52
52
|
const n = r();
|
|
53
53
|
return Array.isArray(n) ? n : n != null ? [n] : [];
|
|
54
54
|
}, r;
|
|
55
55
|
}
|
|
56
|
-
function
|
|
56
|
+
function P() {
|
|
57
57
|
if (this.sources && this.state)
|
|
58
|
-
if (this.state ===
|
|
58
|
+
if (this.state === g) A(this);
|
|
59
59
|
else {
|
|
60
|
-
const t =
|
|
61
|
-
|
|
60
|
+
const t = f;
|
|
61
|
+
f = null, L(() => w(this)), f = t;
|
|
62
62
|
}
|
|
63
63
|
if (l) {
|
|
64
64
|
const t = this.observers ? this.observers.length : 0;
|
|
@@ -66,41 +66,41 @@ function R() {
|
|
|
66
66
|
}
|
|
67
67
|
return this.value;
|
|
68
68
|
}
|
|
69
|
-
function
|
|
69
|
+
function R(t, e, r) {
|
|
70
70
|
let n = t.value;
|
|
71
|
-
return (!t.comparator || !t.comparator(n, e)) && (t.value = e, t.observers && t.observers.length &&
|
|
71
|
+
return (!t.comparator || !t.comparator(n, e)) && (t.value = e, t.observers && t.observers.length && L(() => {
|
|
72
72
|
for (let s = 0; s < t.observers.length; s += 1) {
|
|
73
73
|
const i = t.observers[s], p = C && C.running;
|
|
74
|
-
p && C.disposed.has(i), (p ? !i.tState : !i.state) && (i.pure ?
|
|
74
|
+
p && C.disposed.has(i), (p ? !i.tState : !i.state) && (i.pure ? f.push(i) : h.push(i), i.observers && _(i)), p || (i.state = g);
|
|
75
75
|
}
|
|
76
|
-
if (
|
|
77
|
-
throw
|
|
76
|
+
if (f.length > 1e6)
|
|
77
|
+
throw f = [], new Error();
|
|
78
78
|
})), e;
|
|
79
79
|
}
|
|
80
|
-
function
|
|
80
|
+
function A(t) {
|
|
81
81
|
if (!t.fn) return;
|
|
82
|
-
|
|
83
|
-
const e =
|
|
84
|
-
|
|
82
|
+
x(t);
|
|
83
|
+
const e = S;
|
|
84
|
+
ot(
|
|
85
85
|
t,
|
|
86
86
|
t.value,
|
|
87
87
|
e
|
|
88
88
|
);
|
|
89
89
|
}
|
|
90
|
-
function
|
|
90
|
+
function ot(t, e, r) {
|
|
91
91
|
let n;
|
|
92
|
-
const s =
|
|
93
|
-
l =
|
|
92
|
+
const s = a, i = l;
|
|
93
|
+
l = a = t;
|
|
94
94
|
try {
|
|
95
95
|
n = t.fn(e);
|
|
96
96
|
} catch (p) {
|
|
97
|
-
return t.pure && (t.state =
|
|
97
|
+
return t.pure && (t.state = g, t.owned && t.owned.forEach(x), t.owned = null), t.updatedAt = r + 1, G(p);
|
|
98
98
|
} finally {
|
|
99
|
-
l = i,
|
|
99
|
+
l = i, a = s;
|
|
100
100
|
}
|
|
101
|
-
(!t.updatedAt || t.updatedAt <= r) && (t.updatedAt != null && "observers" in t ?
|
|
101
|
+
(!t.updatedAt || t.updatedAt <= r) && (t.updatedAt != null && "observers" in t ? R(t, n) : t.value = n, t.updatedAt = r);
|
|
102
102
|
}
|
|
103
|
-
function
|
|
103
|
+
function U(t, e, r, n = g, s) {
|
|
104
104
|
const i = {
|
|
105
105
|
fn: t,
|
|
106
106
|
state: n,
|
|
@@ -110,63 +110,63 @@ function j(t, e, r, n = m, s) {
|
|
|
110
110
|
sourceSlots: null,
|
|
111
111
|
cleanups: null,
|
|
112
112
|
value: e,
|
|
113
|
-
owner:
|
|
114
|
-
context:
|
|
113
|
+
owner: a,
|
|
114
|
+
context: a ? a.context : null,
|
|
115
115
|
pure: r
|
|
116
116
|
};
|
|
117
|
-
return
|
|
117
|
+
return a === null || a !== $ && (a.owned ? a.owned.push(i) : a.owned = [i]), i;
|
|
118
118
|
}
|
|
119
|
-
function
|
|
119
|
+
function j(t) {
|
|
120
120
|
if (t.state === 0) return;
|
|
121
|
-
if (t.state ===
|
|
122
|
-
if (t.suspense &&
|
|
121
|
+
if (t.state === y) return w(t);
|
|
122
|
+
if (t.suspense && M(t.suspense.inFallback)) return t.suspense.effects.push(t);
|
|
123
123
|
const e = [t];
|
|
124
|
-
for (; (t = t.owner) && (!t.updatedAt || t.updatedAt <
|
|
124
|
+
for (; (t = t.owner) && (!t.updatedAt || t.updatedAt < S); )
|
|
125
125
|
t.state && e.push(t);
|
|
126
126
|
for (let r = e.length - 1; r >= 0; r--)
|
|
127
|
-
if (t = e[r], t.state ===
|
|
128
|
-
|
|
129
|
-
else if (t.state ===
|
|
130
|
-
const n =
|
|
131
|
-
|
|
127
|
+
if (t = e[r], t.state === g)
|
|
128
|
+
A(t);
|
|
129
|
+
else if (t.state === y) {
|
|
130
|
+
const n = f;
|
|
131
|
+
f = null, L(() => w(t, e[0])), f = n;
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
function
|
|
135
|
-
if (
|
|
134
|
+
function L(t, e) {
|
|
135
|
+
if (f) return t();
|
|
136
136
|
let r = !1;
|
|
137
|
-
|
|
137
|
+
f = [], h ? r = !0 : h = [], S++;
|
|
138
138
|
try {
|
|
139
139
|
const n = t();
|
|
140
|
-
return
|
|
140
|
+
return it(r), n;
|
|
141
141
|
} catch (n) {
|
|
142
|
-
r || (
|
|
142
|
+
r || (h = null), f = null, G(n);
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
function
|
|
146
|
-
if (
|
|
147
|
-
const e =
|
|
148
|
-
|
|
145
|
+
function it(t) {
|
|
146
|
+
if (f && (H(f), f = null), t) return;
|
|
147
|
+
const e = h;
|
|
148
|
+
h = null, e.length && L(() => Z(e));
|
|
149
149
|
}
|
|
150
|
-
function
|
|
151
|
-
for (let e = 0; e < t.length; e++)
|
|
150
|
+
function H(t) {
|
|
151
|
+
for (let e = 0; e < t.length; e++) j(t[e]);
|
|
152
152
|
}
|
|
153
|
-
function
|
|
153
|
+
function w(t, e) {
|
|
154
154
|
t.state = 0;
|
|
155
155
|
for (let r = 0; r < t.sources.length; r += 1) {
|
|
156
156
|
const n = t.sources[r];
|
|
157
157
|
if (n.sources) {
|
|
158
158
|
const s = n.state;
|
|
159
|
-
s ===
|
|
159
|
+
s === g ? n !== e && (!n.updatedAt || n.updatedAt < S) && j(n) : s === y && w(n, e);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
function
|
|
163
|
+
function _(t) {
|
|
164
164
|
for (let e = 0; e < t.observers.length; e += 1) {
|
|
165
165
|
const r = t.observers[e];
|
|
166
|
-
r.state || (r.state =
|
|
166
|
+
r.state || (r.state = y, r.pure ? f.push(r) : h.push(r), r.observers && _(r));
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
-
function
|
|
169
|
+
function x(t) {
|
|
170
170
|
let e;
|
|
171
171
|
if (t.sources)
|
|
172
172
|
for (; t.sources.length; ) {
|
|
@@ -177,11 +177,11 @@ function d(t) {
|
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
if (t.tOwned) {
|
|
180
|
-
for (e = t.tOwned.length - 1; e >= 0; e--)
|
|
180
|
+
for (e = t.tOwned.length - 1; e >= 0; e--) x(t.tOwned[e]);
|
|
181
181
|
delete t.tOwned;
|
|
182
182
|
}
|
|
183
183
|
if (t.owned) {
|
|
184
|
-
for (e = t.owned.length - 1; e >= 0; e--)
|
|
184
|
+
for (e = t.owned.length - 1; e >= 0; e--) x(t.owned[e]);
|
|
185
185
|
t.owned = null;
|
|
186
186
|
}
|
|
187
187
|
if (t.cleanups) {
|
|
@@ -190,13 +190,13 @@ function d(t) {
|
|
|
190
190
|
}
|
|
191
191
|
t.state = 0;
|
|
192
192
|
}
|
|
193
|
-
function
|
|
193
|
+
function ut(t) {
|
|
194
194
|
return t instanceof Error ? t : new Error(typeof t == "string" ? t : "Unknown error", {
|
|
195
195
|
cause: t
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
|
-
function
|
|
199
|
-
throw
|
|
198
|
+
function G(t, e = a) {
|
|
199
|
+
throw ut(t);
|
|
200
200
|
}
|
|
201
201
|
function V(t) {
|
|
202
202
|
if (typeof t == "function" && !t.length) return V(t());
|
|
@@ -210,22 +210,22 @@ function V(t) {
|
|
|
210
210
|
}
|
|
211
211
|
return t;
|
|
212
212
|
}
|
|
213
|
-
function
|
|
213
|
+
function ct(t, e) {
|
|
214
214
|
return function(n) {
|
|
215
215
|
let s;
|
|
216
|
-
return
|
|
217
|
-
() => s =
|
|
218
|
-
...
|
|
216
|
+
return et(
|
|
217
|
+
() => s = M(() => (a.context = {
|
|
218
|
+
...a.context,
|
|
219
219
|
[t]: n.value
|
|
220
|
-
},
|
|
220
|
+
}, st(() => n.children))),
|
|
221
221
|
void 0
|
|
222
222
|
), s;
|
|
223
223
|
};
|
|
224
224
|
}
|
|
225
|
-
const
|
|
225
|
+
const lt = (t) => {
|
|
226
226
|
const e = t.target;
|
|
227
227
|
return e instanceof HTMLSelectElement ? e.value : e instanceof HTMLInputElement && e.type === "checkbox" ? e.checked : e.value;
|
|
228
|
-
},
|
|
228
|
+
}, D = (t, e) => {
|
|
229
229
|
if (t instanceof HTMLSelectElement) {
|
|
230
230
|
t.value = e;
|
|
231
231
|
return;
|
|
@@ -235,7 +235,7 @@ const it = (t) => {
|
|
|
235
235
|
return;
|
|
236
236
|
}
|
|
237
237
|
t.value = e;
|
|
238
|
-
}, b = (t) => t instanceof RegExp || typeof t == "string" || typeof t == "number" ? t : t.value, v = (t) => typeof t == "string" ? t : typeof t.message == "string" ? t.message : "",
|
|
238
|
+
}, b = (t) => t instanceof RegExp || typeof t == "string" || typeof t == "number" ? t : t.value, v = (t) => typeof t == "string" ? t : typeof t.message == "string" ? t.message : "", at = (t, e, r = {}) => {
|
|
239
239
|
const n = t[e];
|
|
240
240
|
if (r.required && !n)
|
|
241
241
|
return { type: "required", message: v(r.required) };
|
|
@@ -256,73 +256,92 @@ const it = (t) => {
|
|
|
256
256
|
if (typeof s == "string")
|
|
257
257
|
return { type: "validate", message: s };
|
|
258
258
|
}
|
|
259
|
-
}, ft = ({
|
|
259
|
+
}, ft = () => {
|
|
260
|
+
const [t, e] = F({});
|
|
261
|
+
return {
|
|
262
|
+
errors: t,
|
|
263
|
+
appendError: (i, p) => {
|
|
264
|
+
e((m) => ({ ...m, [i]: p }));
|
|
265
|
+
},
|
|
266
|
+
removeError: (i) => {
|
|
267
|
+
e((p) => {
|
|
268
|
+
const m = { ...p };
|
|
269
|
+
return delete m[i], m;
|
|
270
|
+
});
|
|
271
|
+
},
|
|
272
|
+
resetErrors: () => {
|
|
273
|
+
e({});
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
}, mt = ({
|
|
260
277
|
defaultValues: t,
|
|
261
278
|
mode: e = "onInput"
|
|
262
279
|
}) => {
|
|
263
|
-
const r = {}, n = {}, [s, i] = F(t),
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
Object.keys(
|
|
271
|
-
|
|
280
|
+
const r = {}, n = {}, [s, i] = F(t), { errors: p, appendError: m, removeError: W, resetErrors: z } = ft(), [k, O] = F(!0), B = (o, u) => {
|
|
281
|
+
const c = r[o];
|
|
282
|
+
c && (u.ref = c), m(o, u);
|
|
283
|
+
}, J = (o) => {
|
|
284
|
+
W(o);
|
|
285
|
+
}, I = (o) => {
|
|
286
|
+
const u = n[o], c = at(s(), o, u);
|
|
287
|
+
c ? B(o, c) : J(o), O(!Object.keys(p()).length);
|
|
288
|
+
}, K = () => {
|
|
289
|
+
Object.keys(s()).forEach((o) => {
|
|
290
|
+
I(o);
|
|
272
291
|
});
|
|
273
|
-
}, N = (
|
|
274
|
-
const
|
|
275
|
-
i((
|
|
276
|
-
},
|
|
277
|
-
required:
|
|
278
|
-
min:
|
|
279
|
-
max:
|
|
280
|
-
minLength:
|
|
281
|
-
maxLength:
|
|
282
|
-
pattern:
|
|
283
|
-
validate:
|
|
292
|
+
}, N = (o, u) => {
|
|
293
|
+
const c = lt(o);
|
|
294
|
+
i((E) => ({ ...E, [u]: c })), I(u);
|
|
295
|
+
}, X = (o, u = {}) => (n[o] = {
|
|
296
|
+
required: u.required,
|
|
297
|
+
min: u.min,
|
|
298
|
+
max: u.max,
|
|
299
|
+
minLength: u.minLength,
|
|
300
|
+
maxLength: u.maxLength,
|
|
301
|
+
pattern: u.pattern,
|
|
302
|
+
validate: u.validate
|
|
284
303
|
}, {
|
|
285
|
-
name:
|
|
304
|
+
name: o,
|
|
286
305
|
// value: values()[name],
|
|
287
|
-
onInput(
|
|
288
|
-
e === "onInput" && N(
|
|
306
|
+
onInput(c) {
|
|
307
|
+
e === "onInput" && N(c, o);
|
|
289
308
|
},
|
|
290
|
-
onChange(
|
|
291
|
-
(e === "onChange" || e === "onInput") && N(
|
|
309
|
+
onChange(c) {
|
|
310
|
+
(e === "onChange" || e === "onInput") && N(c, o);
|
|
292
311
|
},
|
|
293
|
-
ref(
|
|
294
|
-
r[
|
|
312
|
+
ref(c) {
|
|
313
|
+
r[o] || (r[o] = c, c && D(c, s()[o]));
|
|
295
314
|
}
|
|
296
|
-
}), q = (
|
|
315
|
+
}), q = (o) => o ? s()[o] : s();
|
|
297
316
|
return {
|
|
298
317
|
values: s,
|
|
299
318
|
errors: p,
|
|
300
319
|
isValid: k,
|
|
301
|
-
register:
|
|
320
|
+
register: X,
|
|
302
321
|
getValues: q,
|
|
303
|
-
setValue: (
|
|
304
|
-
i((
|
|
305
|
-
const
|
|
306
|
-
|
|
322
|
+
setValue: (o, u) => {
|
|
323
|
+
i((E) => ({ ...E, [o]: u }));
|
|
324
|
+
const c = r[o];
|
|
325
|
+
c && D(c, u);
|
|
307
326
|
},
|
|
308
|
-
onSubmit: (
|
|
309
|
-
|
|
327
|
+
onSubmit: (o) => (u) => {
|
|
328
|
+
u.preventDefault(), K(), k() && o(q());
|
|
310
329
|
},
|
|
311
|
-
reset: (
|
|
330
|
+
reset: (o = {}) => {
|
|
312
331
|
i(() => ({
|
|
313
332
|
...t,
|
|
314
|
-
...
|
|
315
|
-
})),
|
|
333
|
+
...o
|
|
334
|
+
})), z(), O(!0);
|
|
316
335
|
}
|
|
317
336
|
};
|
|
318
|
-
},
|
|
319
|
-
const t =
|
|
337
|
+
}, Q = rt({}), vt = (t) => /* @__PURE__ */ React.createElement(Q.Provider, { value: t.form }, t.children), bt = () => {
|
|
338
|
+
const t = nt(Q);
|
|
320
339
|
if (!t)
|
|
321
340
|
throw new Error("useFormContext: cannot find a FormProvider");
|
|
322
341
|
return t;
|
|
323
342
|
};
|
|
324
343
|
export {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
344
|
+
vt as FormProvider,
|
|
345
|
+
mt as useForm,
|
|
346
|
+
bt as useFormContext
|
|
328
347
|
};
|
package/dist/main.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(h,y){typeof exports=="object"&&typeof module<"u"?y(exports):typeof define=="function"&&define.amd?define(["exports"],y):(h=typeof globalThis<"u"?globalThis:h||self,y(h["solid-hook-form"]={}))})(this,function(h){"use strict";const
|
|
1
|
+
(function(h,y){typeof exports=="object"&&typeof module<"u"?y(exports):typeof define=="function"&&define.amd?define(["exports"],y):(h=typeof globalThis<"u"?globalThis:h||self,y(h["solid-hook-form"]={}))})(this,function(h){"use strict";const E={equals:(t,e)=>t===e};let B=j;const g=1,w=2,J={};var c=null;let k=null,K=null,a=null,f=null,m=null,x=0;function O(t,e){e=e?Object.assign({},E,e):E;const r={value:t,observers:null,observerSlots:null,comparator:e.equals||void 0},n=s=>(typeof s=="function"&&(s=s(r.value)),N(r,s));return[q.bind(r),n]}function X(t,e,r){const n=P(t,e,!1,g);S(n)}function T(t,e,r){r=r?Object.assign({},E,r):E;const n=P(t,e,!0,0);return n.observers=null,n.observerSlots=null,n.comparator=r.equals||void 0,S(n),q.bind(n)}function I(t){if(a===null)return t();const e=a;a=null;try{return t()}finally{a=e}}function Y(t,e){const r=Symbol("context");return{id:r,Provider:nt(r),defaultValue:t}}function Z(t){let e;return c&&c.context&&(e=c.context[t.id])!==void 0?e:t.defaultValue}function $(t){const e=T(t),r=T(()=>V(e()));return r.toArray=()=>{const n=r();return Array.isArray(n)?n:n!=null?[n]:[]},r}function q(){if(this.sources&&this.state)if(this.state===g)S(this);else{const t=f;f=null,A(()=>F(this)),f=t}if(a){const t=this.observers?this.observers.length:0;a.sources?(a.sources.push(this),a.sourceSlots.push(t)):(a.sources=[this],a.sourceSlots=[t]),this.observers?(this.observers.push(a),this.observerSlots.push(a.sources.length-1)):(this.observers=[a],this.observerSlots=[a.sources.length-1])}return this.value}function N(t,e,r){let n=t.value;return(!t.comparator||!t.comparator(n,e))&&(t.value=e,t.observers&&t.observers.length&&A(()=>{for(let s=0;s<t.observers.length;s+=1){const i=t.observers[s],p=k&&k.running;p&&k.disposed.has(i),(p?!i.tState:!i.state)&&(i.pure?f.push(i):m.push(i),i.observers&&D(i)),p||(i.state=g)}if(f.length>1e6)throw f=[],new Error})),e}function S(t){if(!t.fn)return;L(t);const e=x;tt(t,t.value,e)}function tt(t,e,r){let n;const s=c,i=a;a=c=t;try{n=t.fn(e)}catch(p){return t.pure&&(t.state=g,t.owned&&t.owned.forEach(L),t.owned=null),t.updatedAt=r+1,R(p)}finally{a=i,c=s}(!t.updatedAt||t.updatedAt<=r)&&(t.updatedAt!=null&&"observers"in t?N(t,n):t.value=n,t.updatedAt=r)}function P(t,e,r,n=g,s){const i={fn:t,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:e,owner:c,context:c?c.context:null,pure:r};return c===null||c!==J&&(c.owned?c.owned.push(i):c.owned=[i]),i}function M(t){if(t.state===0)return;if(t.state===w)return F(t);if(t.suspense&&I(t.suspense.inFallback))return t.suspense.effects.push(t);const e=[t];for(;(t=t.owner)&&(!t.updatedAt||t.updatedAt<x);)t.state&&e.push(t);for(let r=e.length-1;r>=0;r--)if(t=e[r],t.state===g)S(t);else if(t.state===w){const n=f;f=null,A(()=>F(t,e[0])),f=n}}function A(t,e){if(f)return t();let r=!1;f=[],m?r=!0:m=[],x++;try{const n=t();return et(r),n}catch(n){r||(m=null),f=null,R(n)}}function et(t){if(f&&(j(f),f=null),t)return;const e=m;m=null,e.length&&A(()=>B(e))}function j(t){for(let e=0;e<t.length;e++)M(t[e])}function F(t,e){t.state=0;for(let r=0;r<t.sources.length;r+=1){const n=t.sources[r];if(n.sources){const s=n.state;s===g?n!==e&&(!n.updatedAt||n.updatedAt<x)&&M(n):s===w&&F(n,e)}}}function D(t){for(let e=0;e<t.observers.length;e+=1){const r=t.observers[e];r.state||(r.state=w,r.pure?f.push(r):m.push(r),r.observers&&D(r))}}function L(t){let e;if(t.sources)for(;t.sources.length;){const r=t.sources.pop(),n=t.sourceSlots.pop(),s=r.observers;if(s&&s.length){const i=s.pop(),p=r.observerSlots.pop();n<s.length&&(i.sourceSlots[p]=n,s[n]=i,r.observerSlots[n]=p)}}if(t.tOwned){for(e=t.tOwned.length-1;e>=0;e--)L(t.tOwned[e]);delete t.tOwned}if(t.owned){for(e=t.owned.length-1;e>=0;e--)L(t.owned[e]);t.owned=null}if(t.cleanups){for(e=t.cleanups.length-1;e>=0;e--)t.cleanups[e]();t.cleanups=null}t.state=0}function rt(t){return t instanceof Error?t:new Error(typeof t=="string"?t:"Unknown error",{cause:t})}function R(t,e=c){throw rt(t)}function V(t){if(typeof t=="function"&&!t.length)return V(t());if(Array.isArray(t)){const e=[];for(let r=0;r<t.length;r++){const n=V(t[r]);Array.isArray(n)?e.push.apply(e,n):e.push(n)}return e}return t}function nt(t,e){return function(n){let s;return X(()=>s=I(()=>(c.context={...c.context,[t]:n.value},$(()=>n.children))),void 0),s}}const st=t=>{const e=t.target;return e instanceof HTMLSelectElement?e.value:e instanceof HTMLInputElement&&e.type==="checkbox"?e.checked:e.value},U=(t,e)=>{if(t instanceof HTMLSelectElement){t.value=e;return}if(t instanceof HTMLInputElement&&t.type==="checkbox"){t.checked=e;return}t.value=e},b=t=>t instanceof RegExp||typeof t=="string"||typeof t=="number"?t:t.value,v=t=>typeof t=="string"?t:typeof t.message=="string"?t.message:"",ot=(t,e,r={})=>{const n=t[e];if(r.required&&!n)return{type:"required",message:v(r.required)};if(r.min&&Number(n)<Number(b(r.min)))return{type:"min",message:v(r.min)};if(r.max&&Number(n)>Number(b(r.max)))return{type:"max",message:v(r.max)};if(r.minLength&&n.length<b(r.minLength))return{type:"minLength",message:v(r.minLength)};if(r.maxLength&&n.length>b(r.maxLength))return{type:"maxLength",message:v(r.maxLength)};if(r.pattern&&!b(r.pattern).test(n))return{type:"pattern",message:v(r.pattern)};if(r.validate){const s=r.validate(n,t);if(s===!1)return{type:"validate"};if(typeof s=="string")return{type:"validate",message:s}}},it=()=>{const[t,e]=O({});return{errors:t,appendError:(i,p)=>{e(d=>({...d,[i]:p}))},removeError:i=>{e(p=>{const d={...p};return delete d[i],d})},resetErrors:()=>{e({})}}},ut=({defaultValues:t,mode:e="onInput"})=>{const r={},n={},[s,i]=O(t),{errors:p,appendError:d,removeError:at,resetErrors:ft}=it(),[_,G]=O(!0),pt=(o,u)=>{const l=r[o];l&&(u.ref=l),d(o,u)},ht=o=>{at(o)},Q=o=>{const u=n[o],l=ot(s(),o,u);l?pt(o,l):ht(o),G(!Object.keys(p()).length)},gt=()=>{Object.keys(s()).forEach(o=>{Q(o)})},W=(o,u)=>{const l=st(o);i(C=>({...C,[u]:l})),Q(u)},mt=(o,u={})=>(n[o]={required:u.required,min:u.min,max:u.max,minLength:u.minLength,maxLength:u.maxLength,pattern:u.pattern,validate:u.validate},{name:o,onInput(l){e==="onInput"&&W(l,o)},onChange(l){(e==="onChange"||e==="onInput")&&W(l,o)},ref(l){r[o]||(r[o]=l,l&&U(l,s()[o]))}}),z=o=>o?s()[o]:s();return{values:s,errors:p,isValid:_,register:mt,getValues:z,setValue:(o,u)=>{i(C=>({...C,[o]:u}));const l=r[o];l&&U(l,u)},onSubmit:o=>u=>{u.preventDefault(),gt(),_()&&o(z())},reset:(o={})=>{i(()=>({...t,...o})),ft(),G(!0)}}},H=Y({}),lt=t=>React.createElement(H.Provider,{value:t.form},t.children),ct=()=>{const t=Z(H);if(!t)throw new Error("useFormContext: cannot find a FormProvider");return t};h.FormProvider=lt,h.useForm=ut,h.useFormContext=ct,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|
package/dist/types/errors.d.ts
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
import { FormValues } from './form';
|
|
2
|
-
import {
|
|
2
|
+
import { Path } from './path';
|
|
3
|
+
import { LiteralUnion } from './utils';
|
|
3
4
|
import { Rules } from './validate';
|
|
5
|
+
export type Message = string;
|
|
4
6
|
export type FieldError = {
|
|
5
7
|
type: LiteralUnion<keyof Rules, string>;
|
|
8
|
+
ref?: HTMLElement;
|
|
6
9
|
message?: Message;
|
|
7
10
|
};
|
|
8
|
-
export type
|
|
9
|
-
export type GlobalError = Partial<{
|
|
10
|
-
type: string | number;
|
|
11
|
-
message: Message;
|
|
12
|
-
}>;
|
|
13
|
-
export type DeepRequired<T> = T extends BrowserNativeObject | Blob ? T : {
|
|
14
|
-
[K in keyof T]-?: NonNullable<DeepRequired<T[K]>>;
|
|
15
|
-
};
|
|
16
|
-
export type FieldErrorsImpl<T extends FormValues = FormValues> = {
|
|
17
|
-
[K in keyof T]?: T[K] extends BrowserNativeObject | Blob ? FieldError : K extends "root" | `root.${string}` ? GlobalError : T[K] extends object ? Merge<FieldError, FieldErrorsImpl<T[K]>> : FieldError;
|
|
18
|
-
};
|
|
19
|
-
export type FieldErrors<T extends FormValues = FormValues> = Partial<FormValues extends IsAny<FormValues> ? any : FieldErrorsImpl<DeepRequired<T>>> & {
|
|
20
|
-
root?: Record<string, GlobalError> & GlobalError;
|
|
21
|
-
};
|
|
11
|
+
export type FieldErrors<F extends FormValues = FormValues> = Partial<Record<Path<F>, FieldError>>;
|
package/dist/types/form.d.ts
CHANGED
|
@@ -3,9 +3,10 @@ import { FieldPath, FieldPathValue, Path } from './path';
|
|
|
3
3
|
import { Rules } from './validate';
|
|
4
4
|
import { FieldErrors } from './errors';
|
|
5
5
|
export type FormValues = Record<string, any>;
|
|
6
|
+
export type Ref = HTMLElement | null;
|
|
6
7
|
type RegisterReturn<F extends FormValues> = {
|
|
7
8
|
name: Path<F>;
|
|
8
|
-
ref(ref:
|
|
9
|
+
ref(ref: Ref): void;
|
|
9
10
|
onInput(event: Event): void;
|
|
10
11
|
onChange(event: Event): void;
|
|
11
12
|
};
|
|
@@ -28,4 +29,5 @@ export type UseFormReturn<F extends FormValues = FormValues> = {
|
|
|
28
29
|
onSubmit: OnSubmit<F>;
|
|
29
30
|
reset: Reset<F>;
|
|
30
31
|
};
|
|
32
|
+
export type FormFields = Record<string, Ref>;
|
|
31
33
|
export {};
|