@chenzy-design/core 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-chat-dialogue.d.ts +300 -0
- package/dist/ai-chat-dialogue.d.ts.map +1 -0
- package/dist/ai-chat-dialogue.js +699 -0
- package/dist/ai-chat-dialogue.js.map +1 -0
- package/dist/ai-chat-dialogue.test.d.ts +2 -0
- package/dist/ai-chat-dialogue.test.d.ts.map +1 -0
- package/dist/ai-chat-dialogue.test.js +338 -0
- package/dist/ai-chat-dialogue.test.js.map +1 -0
- package/dist/ai-chat-input.d.ts +191 -0
- package/dist/ai-chat-input.d.ts.map +1 -0
- package/dist/ai-chat-input.js +274 -0
- package/dist/ai-chat-input.js.map +1 -0
- package/dist/ai-chat-input.test.d.ts +2 -0
- package/dist/ai-chat-input.test.d.ts.map +1 -0
- package/dist/ai-chat-input.test.js +339 -0
- package/dist/ai-chat-input.test.js.map +1 -0
- package/dist/audio-player.d.ts +154 -0
- package/dist/audio-player.d.ts.map +1 -0
- package/dist/audio-player.js +254 -0
- package/dist/audio-player.js.map +1 -0
- package/dist/audio-player.test.d.ts +2 -0
- package/dist/audio-player.test.d.ts.map +1 -0
- package/dist/audio-player.test.js +275 -0
- package/dist/audio-player.test.js.map +1 -0
- package/dist/back-top.d.ts +4 -1
- package/dist/back-top.d.ts.map +1 -1
- package/dist/back-top.js +5 -2
- package/dist/back-top.js.map +1 -1
- package/dist/back-top.test.js +3 -2
- package/dist/back-top.test.js.map +1 -1
- package/dist/calendar.d.ts +132 -44
- package/dist/calendar.d.ts.map +1 -1
- package/dist/calendar.js +413 -70
- package/dist/calendar.js.map +1 -1
- package/dist/calendar.test.js +160 -76
- package/dist/calendar.test.js.map +1 -1
- package/dist/chat.d.ts +172 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +210 -0
- package/dist/chat.js.map +1 -0
- package/dist/chat.test.d.ts +2 -0
- package/dist/chat.test.d.ts.map +1 -0
- package/dist/chat.test.js +181 -0
- package/dist/chat.test.js.map +1 -0
- package/dist/code-highlight.d.ts +30 -0
- package/dist/code-highlight.d.ts.map +1 -0
- package/dist/code-highlight.js +37 -0
- package/dist/code-highlight.js.map +1 -0
- package/dist/code-highlight.test.d.ts +2 -0
- package/dist/code-highlight.test.d.ts.map +1 -0
- package/dist/code-highlight.test.js +36 -0
- package/dist/code-highlight.test.js.map +1 -0
- package/dist/collapsible.d.ts +41 -0
- package/dist/collapsible.d.ts.map +1 -0
- package/dist/collapsible.js +33 -0
- package/dist/collapsible.js.map +1 -0
- package/dist/collapsible.test.d.ts +2 -0
- package/dist/collapsible.test.d.ts.map +1 -0
- package/dist/collapsible.test.js +57 -0
- package/dist/collapsible.test.js.map +1 -0
- package/dist/color-value.d.ts +60 -0
- package/dist/color-value.d.ts.map +1 -0
- package/dist/color-value.js +165 -0
- package/dist/color-value.js.map +1 -0
- package/dist/color-value.test.d.ts +2 -0
- package/dist/color-value.test.d.ts.map +1 -0
- package/dist/color-value.test.js +104 -0
- package/dist/color-value.test.js.map +1 -0
- package/dist/config-provider.d.ts +76 -37
- package/dist/config-provider.d.ts.map +1 -1
- package/dist/config-provider.js +107 -32
- package/dist/config-provider.js.map +1 -1
- package/dist/config-provider.test.js +123 -60
- package/dist/config-provider.test.js.map +1 -1
- package/dist/cropper.d.ts +164 -0
- package/dist/cropper.d.ts.map +1 -0
- package/dist/cropper.js +841 -0
- package/dist/cropper.js.map +1 -0
- package/dist/cropper.test.d.ts +2 -0
- package/dist/cropper.test.d.ts.map +1 -0
- package/dist/cropper.test.js +259 -0
- package/dist/cropper.test.js.map +1 -0
- package/dist/drag-move.d.ts +119 -0
- package/dist/drag-move.d.ts.map +1 -0
- package/dist/drag-move.js +237 -0
- package/dist/drag-move.js.map +1 -0
- package/dist/drag-move.test.d.ts +2 -0
- package/dist/drag-move.test.d.ts.map +1 -0
- package/dist/drag-move.test.js +304 -0
- package/dist/drag-move.test.js.map +1 -0
- package/dist/editable.d.ts +24 -4
- package/dist/editable.d.ts.map +1 -1
- package/dist/editable.js +18 -0
- package/dist/editable.js.map +1 -1
- package/dist/editable.test.js +55 -2
- package/dist/editable.test.js.map +1 -1
- package/dist/ellipsis.d.ts +13 -0
- package/dist/ellipsis.d.ts.map +1 -1
- package/dist/ellipsis.js +36 -0
- package/dist/ellipsis.js.map +1 -1
- package/dist/ellipsis.test.js +37 -1
- package/dist/ellipsis.test.js.map +1 -1
- package/dist/form-path.d.ts +19 -0
- package/dist/form-path.d.ts.map +1 -0
- package/dist/form-path.js +97 -0
- package/dist/form-path.js.map +1 -0
- package/dist/form-path.test.d.ts +2 -0
- package/dist/form-path.test.d.ts.map +1 -0
- package/dist/form-path.test.js +57 -0
- package/dist/form-path.test.js.map +1 -0
- package/dist/form-validate.d.ts +13 -0
- package/dist/form-validate.d.ts.map +1 -0
- package/dist/form-validate.js +204 -0
- package/dist/form-validate.js.map +1 -0
- package/dist/form.d.ts +91 -18
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +170 -115
- package/dist/form.js.map +1 -1
- package/dist/form.test.js +349 -76
- package/dist/form.test.js.map +1 -1
- package/dist/highlight.d.ts +42 -32
- package/dist/highlight.d.ts.map +1 -1
- package/dist/highlight.js +67 -41
- package/dist/highlight.js.map +1 -1
- package/dist/highlight.test.js +73 -32
- package/dist/highlight.test.js.map +1 -1
- package/dist/hotkeys.d.ts +151 -0
- package/dist/hotkeys.d.ts.map +1 -0
- package/dist/hotkeys.js +188 -0
- package/dist/hotkeys.js.map +1 -0
- package/dist/hotkeys.test.d.ts +2 -0
- package/dist/hotkeys.test.d.ts.map +1 -0
- package/dist/hotkeys.test.js +170 -0
- package/dist/hotkeys.test.js.map +1 -0
- package/dist/index.d.ts +33 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -13
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +34 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +54 -0
- package/dist/input.js.map +1 -0
- package/dist/input.test.d.ts +2 -0
- package/dist/input.test.d.ts.map +1 -0
- package/dist/input.test.js +56 -0
- package/dist/input.test.js.map +1 -0
- package/dist/markdown-render.d.ts +49 -0
- package/dist/markdown-render.d.ts.map +1 -0
- package/dist/markdown-render.js +61 -0
- package/dist/markdown-render.js.map +1 -0
- package/dist/markdown-render.test.d.ts +2 -0
- package/dist/markdown-render.test.d.ts.map +1 -0
- package/dist/markdown-render.test.js +106 -0
- package/dist/markdown-render.test.js.map +1 -0
- package/dist/notification.d.ts +40 -31
- package/dist/notification.d.ts.map +1 -1
- package/dist/notification.js +86 -70
- package/dist/notification.js.map +1 -1
- package/dist/notification.test.js +62 -39
- package/dist/notification.test.js.map +1 -1
- package/dist/numeral.d.ts +32 -0
- package/dist/numeral.d.ts.map +1 -0
- package/dist/numeral.js +67 -0
- package/dist/numeral.js.map +1 -0
- package/dist/numeral.test.d.ts +2 -0
- package/dist/numeral.test.d.ts.map +1 -0
- package/dist/numeral.test.js +59 -0
- package/dist/numeral.test.js.map +1 -0
- package/dist/overflow-list.d.ts +9 -40
- package/dist/overflow-list.d.ts.map +1 -1
- package/dist/overflow-list.js +9 -70
- package/dist/overflow-list.js.map +1 -1
- package/dist/overflow-list.test.js +1 -122
- package/dist/overflow-list.test.js.map +1 -1
- package/dist/pagination.d.ts +17 -0
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +48 -0
- package/dist/pagination.js.map +1 -1
- package/dist/pagination.test.js +40 -1
- package/dist/pagination.test.js.map +1 -1
- package/dist/pincode.d.ts +79 -0
- package/dist/pincode.d.ts.map +1 -0
- package/dist/pincode.js +119 -0
- package/dist/pincode.js.map +1 -0
- package/dist/pincode.test.d.ts +2 -0
- package/dist/pincode.test.d.ts.map +1 -0
- package/dist/pincode.test.js +151 -0
- package/dist/pincode.test.js.map +1 -0
- package/dist/progress.d.ts +32 -30
- package/dist/progress.d.ts.map +1 -1
- package/dist/progress.js +257 -64
- package/dist/progress.js.map +1 -1
- package/dist/progress.test.js +50 -47
- package/dist/progress.test.js.map +1 -1
- package/dist/resizable.d.ts +200 -0
- package/dist/resizable.d.ts.map +1 -0
- package/dist/resizable.js +329 -0
- package/dist/resizable.js.map +1 -0
- package/dist/resizable.test.d.ts +2 -0
- package/dist/resizable.test.d.ts.map +1 -0
- package/dist/resizable.test.js +302 -0
- package/dist/resizable.test.js.map +1 -0
- package/dist/scroll-list.d.ts +69 -62
- package/dist/scroll-list.d.ts.map +1 -1
- package/dist/scroll-list.js +103 -144
- package/dist/scroll-list.js.map +1 -1
- package/dist/scroll-list.test.js +100 -110
- package/dist/scroll-list.test.js.map +1 -1
- package/dist/sidebar.d.ts +46 -0
- package/dist/sidebar.d.ts.map +1 -0
- package/dist/sidebar.js +65 -0
- package/dist/sidebar.js.map +1 -0
- package/dist/sidebar.test.d.ts +2 -0
- package/dist/sidebar.test.d.ts.map +1 -0
- package/dist/sidebar.test.js +88 -0
- package/dist/sidebar.test.js.map +1 -0
- package/dist/spin.d.ts +5 -5
- package/dist/spin.d.ts.map +1 -1
- package/dist/spin.js +13 -39
- package/dist/spin.js.map +1 -1
- package/dist/spin.test.js +2 -26
- package/dist/spin.test.js.map +1 -1
- package/dist/toast.d.ts +33 -30
- package/dist/toast.d.ts.map +1 -1
- package/dist/toast.js +77 -72
- package/dist/toast.js.map +1 -1
- package/dist/toast.test.js +63 -37
- package/dist/toast.test.js.map +1 -1
- package/dist/tree.d.ts +22 -5
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +61 -9
- package/dist/tree.js.map +1 -1
- package/dist/tree.test.js +72 -1
- package/dist/tree.test.js.map +1 -1
- package/dist/user-guide.d.ts +73 -0
- package/dist/user-guide.d.ts.map +1 -0
- package/dist/user-guide.js +95 -0
- package/dist/user-guide.js.map +1 -0
- package/dist/user-guide.test.d.ts +2 -0
- package/dist/user-guide.test.d.ts.map +1 -0
- package/dist/user-guide.test.js +109 -0
- package/dist/user-guide.test.js.map +1 -0
- package/dist/video-player.d.ts +196 -0
- package/dist/video-player.d.ts.map +1 -0
- package/dist/video-player.js +461 -0
- package/dist/video-player.js.map +1 -0
- package/dist/video-player.test.d.ts +2 -0
- package/dist/video-player.test.d.ts.map +1 -0
- package/dist/video-player.test.js +435 -0
- package/dist/video-player.test.js.map +1 -0
- package/package.json +17 -1
- package/dist/banner.d.ts +0 -19
- package/dist/banner.d.ts.map +0 -1
- package/dist/banner.js +0 -20
- package/dist/banner.js.map +0 -1
- package/dist/banner.test.d.ts +0 -2
- package/dist/banner.test.d.ts.map +0 -1
- package/dist/banner.test.js +0 -29
- package/dist/banner.test.js.map +0 -1
- package/dist/breakpoints.d.ts +0 -30
- package/dist/breakpoints.d.ts.map +0 -1
- package/dist/breakpoints.js +0 -45
- package/dist/breakpoints.js.map +0 -1
- package/dist/breakpoints.test.d.ts +0 -2
- package/dist/breakpoints.test.d.ts.map +0 -1
- package/dist/breakpoints.test.js +0 -46
- package/dist/breakpoints.test.js.map +0 -1
- package/dist/lottie-icon.d.ts +0 -88
- package/dist/lottie-icon.d.ts.map +0 -1
- package/dist/lottie-icon.js +0 -84
- package/dist/lottie-icon.js.map +0 -1
- package/dist/lottie-icon.test.d.ts +0 -2
- package/dist/lottie-icon.test.d.ts.map +0 -1
- package/dist/lottie-icon.test.js +0 -88
- package/dist/lottie-icon.test.js.map +0 -1
- package/dist/sider.d.ts +0 -26
- package/dist/sider.d.ts.map +0 -1
- package/dist/sider.js +0 -55
- package/dist/sider.js.map +0 -1
- package/dist/sider.test.d.ts +0 -2
- package/dist/sider.test.d.ts.map +0 -1
- package/dist/sider.test.js +0 -29
- package/dist/sider.test.js.map +0 -1
package/dist/form.js
CHANGED
|
@@ -2,22 +2,38 @@
|
|
|
2
2
|
* createForm — framework-agnostic form state machine + validation engine.
|
|
3
3
|
* No DOM, no framework deps. See specs/components/input/Form.spec.md.
|
|
4
4
|
*
|
|
5
|
-
* Scope (
|
|
6
|
-
* sync + async rules
|
|
7
|
-
* async
|
|
8
|
-
*
|
|
5
|
+
* Scope: nested-path values (`users[0].name` via lodash paths, Semi-aligned) /
|
|
6
|
+
* errors / touched / dirty, field registry, sync + async rules run through
|
|
7
|
+
* async-validator (with a `warningOnly` soft-warning superset layered on top),
|
|
8
|
+
* async race-token discard, validate/reset/submitForm, fine-grained subscribe,
|
|
9
|
+
* dependencies graph.
|
|
9
10
|
*/
|
|
10
11
|
import { useId } from './id.js';
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
import { pathGet, pathSet, pathHas, pathRemove } from './form-path.js';
|
|
13
|
+
import { runFieldRules } from './form-validate.js';
|
|
13
14
|
/** the canonical "value is empty" predicate shared by required-rules and allowEmpty. */
|
|
14
15
|
function isEmptyValue(v) {
|
|
15
16
|
return v === undefined || v === null || v === '';
|
|
16
17
|
}
|
|
18
|
+
/** deep clone a plain values tree so `initial` and live `values` never alias. */
|
|
19
|
+
function clone(v) {
|
|
20
|
+
if (typeof structuredClone === 'function') {
|
|
21
|
+
try {
|
|
22
|
+
return structuredClone(v);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
/* value has non-cloneable members (e.g. functions) → fall through */
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return JSON.parse(JSON.stringify(v));
|
|
29
|
+
}
|
|
17
30
|
const DEFAULT_TRIGGER = ['blur', 'change'];
|
|
18
31
|
export function createForm(options = {}) {
|
|
19
32
|
const resolve = options.resolveMessage ?? ((d) => d.text ?? d.key);
|
|
20
|
-
|
|
33
|
+
// the initial values tree (nested; Semi-aligned). Reassigned (immutably) when a
|
|
34
|
+
// field registers its own `initialValue` at a nested path. Deep-cloned into
|
|
35
|
+
// `state.values` so mutating one never leaks into the other.
|
|
36
|
+
let initialTree = clone(options.initialValues ?? {});
|
|
21
37
|
const defaultTrigger = Array.isArray(options.validateTrigger)
|
|
22
38
|
? options.validateTrigger
|
|
23
39
|
: options.validateTrigger
|
|
@@ -29,10 +45,10 @@ export function createForm(options = {}) {
|
|
|
29
45
|
// per-field async race token: only the latest validation may write the error
|
|
30
46
|
const tokens = new Map();
|
|
31
47
|
// reverse dependency graph: dep field name → set of fields that depend on it.
|
|
32
|
-
//
|
|
48
|
+
// setValue(dep) connects to re-validating the dependents.
|
|
33
49
|
const dependents = new Map();
|
|
34
50
|
const state = {
|
|
35
|
-
values:
|
|
51
|
+
values: clone(initialTree),
|
|
36
52
|
errors: {},
|
|
37
53
|
warnings: {},
|
|
38
54
|
touched: {},
|
|
@@ -49,113 +65,71 @@ export function createForm(options = {}) {
|
|
|
49
65
|
return fields.get(name)?.label ?? name;
|
|
50
66
|
}
|
|
51
67
|
/**
|
|
52
|
-
* snapshot of values honoring `allowEmpty` (spec §4 L70)
|
|
53
|
-
*
|
|
68
|
+
* snapshot of values honoring `allowEmpty` (spec §4 L70), rebuilt as a NESTED
|
|
69
|
+
* tree from each registered field's path (Semi-aligned): a `users[0].name`
|
|
70
|
+
* field lands at `{ users: [{ name }] }`, not a flat `'users[0].name'` key.
|
|
71
|
+
*
|
|
72
|
+
* With the default `allowEmpty:false`, fields whose value is empty are omitted.
|
|
73
|
+
* Registered fields are collected by their path; any remaining top-level keys
|
|
74
|
+
* that no field registered (e.g. values set via `setValues` without a Field)
|
|
75
|
+
* pass through verbatim so nothing is silently dropped.
|
|
54
76
|
*/
|
|
55
77
|
function collectValues() {
|
|
56
|
-
|
|
57
|
-
|
|
78
|
+
let out = {};
|
|
79
|
+
const seenTop = new Set();
|
|
80
|
+
for (const [name, cfg] of fields) {
|
|
81
|
+
const raw = pathGet(state.values, name);
|
|
58
82
|
// a registered field's `transform` runs over the raw value (pure, no
|
|
59
|
-
// state write-back per red line #2).
|
|
60
|
-
const
|
|
61
|
-
const v = transform ? transform(raw, state.values) : raw;
|
|
83
|
+
// state write-back per red line #2).
|
|
84
|
+
const v = cfg.transform ? cfg.transform(raw, state.values) : raw;
|
|
62
85
|
// `allowEmpty` is decided on the *transformed* value: a transform may turn
|
|
63
86
|
// an empty input into a real value (or vice versa).
|
|
64
|
-
if (allowEmpty || !isEmptyValue(v))
|
|
65
|
-
out
|
|
87
|
+
if (allowEmpty || !isEmptyValue(v)) {
|
|
88
|
+
out = pathSet(out, name, v);
|
|
89
|
+
seenTop.add(topSegment(name));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// pass through top-level keys not owned by any registered field (unregistered
|
|
93
|
+
// values written directly). Registered subtrees already rebuilt above.
|
|
94
|
+
for (const [k, raw] of Object.entries(state.values)) {
|
|
95
|
+
if (seenTop.has(k))
|
|
96
|
+
continue;
|
|
97
|
+
if (fieldsCoverTop(k))
|
|
98
|
+
continue;
|
|
99
|
+
if (allowEmpty || !isEmptyValue(raw))
|
|
100
|
+
out[k] = raw;
|
|
66
101
|
}
|
|
67
102
|
return out;
|
|
68
103
|
}
|
|
104
|
+
/** first path segment of a field name (`users[0].name` → `users`). */
|
|
105
|
+
function topSegment(name) {
|
|
106
|
+
const m = /^[^.[\]]+/.exec(name);
|
|
107
|
+
return m ? m[0] : name;
|
|
108
|
+
}
|
|
109
|
+
/** whether any registered field lives under top-level key `k`. */
|
|
110
|
+
function fieldsCoverTop(k) {
|
|
111
|
+
for (const name of fields.keys())
|
|
112
|
+
if (topSegment(name) === k)
|
|
113
|
+
return true;
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
69
116
|
/**
|
|
70
|
-
* run
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* real error can still win. A failing normal rule short-circuits with an error.
|
|
117
|
+
* run a field's rules through the async-validator-backed engine (blocking rules
|
|
118
|
+
* + a `warningOnly` soft-warning layer). Returns the first blocking error and
|
|
119
|
+
* the first warning, honoring `stopValidateWithError`.
|
|
74
120
|
*/
|
|
75
121
|
async function runRules(name, value) {
|
|
76
122
|
const cfg = fields.get(name);
|
|
77
|
-
if (!cfg?.rules)
|
|
123
|
+
if (!cfg?.rules || cfg.rules.length === 0)
|
|
78
124
|
return {};
|
|
79
|
-
|
|
80
|
-
let warning;
|
|
81
|
-
// first blocking error seen. With stopValidateWithError we return on it
|
|
82
|
-
// immediately; otherwise we keep scanning (so warnings accumulate and the
|
|
83
|
-
// semantics of "run all rules" hold) but still surface this first one.
|
|
84
|
-
let firstError;
|
|
85
|
-
// route a failed rule's message: warningOnly → record warning & continue;
|
|
86
|
-
// otherwise capture it as the blocking error. Returns a result object only
|
|
87
|
-
// when evaluation must halt (stopValidateWithError + a blocking error).
|
|
88
|
-
const fail = (rule, d) => {
|
|
89
|
-
const text = rule.message ?? resolve(d);
|
|
90
|
-
if (rule.warningOnly) {
|
|
91
|
-
if (warning === undefined)
|
|
92
|
-
warning = text;
|
|
93
|
-
return undefined; // keep scanning subsequent rules
|
|
94
|
-
}
|
|
95
|
-
if (firstError === undefined)
|
|
96
|
-
firstError = text;
|
|
97
|
-
if (stopWithError)
|
|
98
|
-
return { error: firstError, warning };
|
|
99
|
-
return undefined; // keep scanning subsequent rules
|
|
100
|
-
};
|
|
101
|
-
for (const rule of cfg.rules) {
|
|
102
|
-
const isEmpty = isEmptyValue(value);
|
|
103
|
-
if (rule.required && isEmpty) {
|
|
104
|
-
const r = fail(rule, { key: 'Form.required', params: { label } });
|
|
105
|
-
if (r)
|
|
106
|
-
return r;
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
if (isEmpty)
|
|
110
|
-
continue; // other rules skip empty values
|
|
111
|
-
let descriptor;
|
|
112
|
-
if (rule.type === 'email' && !EMAIL_RE.test(String(value))) {
|
|
113
|
-
descriptor = { key: 'Form.typeError', params: { label } };
|
|
114
|
-
}
|
|
115
|
-
else if (rule.type === 'url' && !URL_RE.test(String(value))) {
|
|
116
|
-
descriptor = { key: 'Form.typeError', params: { label } };
|
|
117
|
-
}
|
|
118
|
-
else if (rule.type === 'number' && Number.isNaN(Number(value))) {
|
|
119
|
-
descriptor = { key: 'Form.typeError', params: { label } };
|
|
120
|
-
}
|
|
121
|
-
else if (rule.minLength !== undefined && String(value).length < rule.minLength) {
|
|
122
|
-
descriptor = { key: 'Form.minLength', params: { min: rule.minLength } };
|
|
123
|
-
}
|
|
124
|
-
else if (rule.maxLength !== undefined && String(value).length > rule.maxLength) {
|
|
125
|
-
descriptor = { key: 'Form.maxLength', params: { max: rule.maxLength } };
|
|
126
|
-
}
|
|
127
|
-
else if (rule.min !== undefined && Number(value) < rule.min) {
|
|
128
|
-
descriptor = { key: 'Form.min', params: { min: rule.min } };
|
|
129
|
-
}
|
|
130
|
-
else if (rule.max !== undefined && Number(value) > rule.max) {
|
|
131
|
-
descriptor = { key: 'Form.max', params: { max: rule.max } };
|
|
132
|
-
}
|
|
133
|
-
else if (rule.pattern && !rule.pattern.test(String(value))) {
|
|
134
|
-
descriptor = { key: 'Form.pattern', params: { label } };
|
|
135
|
-
}
|
|
136
|
-
if (descriptor) {
|
|
137
|
-
const r = fail(rule, descriptor);
|
|
138
|
-
if (r)
|
|
139
|
-
return r;
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
if (rule.validator) {
|
|
143
|
-
const v = await rule.validator(value, state.values);
|
|
144
|
-
if (v) {
|
|
145
|
-
const r = fail(rule, { text: v, key: '' });
|
|
146
|
-
if (r)
|
|
147
|
-
return r;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return { error: firstError, warning };
|
|
125
|
+
return runFieldRules(name, value, state.values, cfg.rules, labelOf(name), resolve, stopWithError);
|
|
152
126
|
}
|
|
153
127
|
async function validateField(name) {
|
|
154
128
|
const token = useId('v');
|
|
155
129
|
tokens.set(name, token);
|
|
156
130
|
state.validating = { ...state.validating, [name]: true };
|
|
157
131
|
emit();
|
|
158
|
-
const { error, warning } = await runRules(name, state.values
|
|
132
|
+
const { error, warning } = await runRules(name, pathGet(state.values, name));
|
|
159
133
|
// race guard: a newer validation superseded this one → discard
|
|
160
134
|
if (tokens.get(name) !== token)
|
|
161
135
|
return state.errors[name];
|
|
@@ -166,7 +140,7 @@ export function createForm(options = {}) {
|
|
|
166
140
|
return error;
|
|
167
141
|
}
|
|
168
142
|
return {
|
|
169
|
-
|
|
143
|
+
getFormState: () => state,
|
|
170
144
|
subscribe(listener) {
|
|
171
145
|
listeners.add(listener);
|
|
172
146
|
return () => listeners.delete(listener);
|
|
@@ -180,9 +154,9 @@ export function createForm(options = {}) {
|
|
|
180
154
|
dependents.set(dep, (set = new Set()));
|
|
181
155
|
set.add(name);
|
|
182
156
|
}
|
|
183
|
-
if (config.initialValue !== undefined && state.values
|
|
184
|
-
state.values =
|
|
185
|
-
|
|
157
|
+
if (config.initialValue !== undefined && pathGet(state.values, name) === undefined) {
|
|
158
|
+
state.values = pathSet(state.values, name, config.initialValue);
|
|
159
|
+
initialTree = pathSet(initialTree, name, config.initialValue);
|
|
186
160
|
emit();
|
|
187
161
|
}
|
|
188
162
|
return () => {
|
|
@@ -198,9 +172,11 @@ export function createForm(options = {}) {
|
|
|
198
172
|
return defaultTrigger;
|
|
199
173
|
return Array.isArray(t) ? t : [t];
|
|
200
174
|
},
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
175
|
+
getValue: (name) => (name === undefined ? clone(state.values) : pathGet(state.values, name)),
|
|
176
|
+
setValue(name, value, opts) {
|
|
177
|
+
// immutable nested write: rebuild the branch along `name`'s path so Svelte
|
|
178
|
+
// subscribers see a fresh root reference (never mutate in place).
|
|
179
|
+
state.values = pathSet(state.values, name, value);
|
|
204
180
|
emit();
|
|
205
181
|
if (opts?.validate)
|
|
206
182
|
void validateField(name);
|
|
@@ -216,37 +192,116 @@ export function createForm(options = {}) {
|
|
|
216
192
|
void validateField(dep);
|
|
217
193
|
}
|
|
218
194
|
},
|
|
219
|
-
|
|
220
|
-
|
|
195
|
+
setValues(values, config) {
|
|
196
|
+
// isOverride:true replaces the whole (nested) values tree; default merges at
|
|
197
|
+
// the top level (nested subtrees are replaced wholesale, matching Semi's
|
|
198
|
+
// per-field setValue when a subtree object is supplied). Field subscribers
|
|
199
|
+
// re-read on emit. Clone the incoming tree so callers can't alias state.
|
|
200
|
+
state.values = config?.isOverride
|
|
201
|
+
? clone(values)
|
|
202
|
+
: { ...state.values, ...clone(values) };
|
|
221
203
|
emit();
|
|
222
204
|
},
|
|
223
|
-
|
|
205
|
+
setTouched(name, touched = true) {
|
|
224
206
|
state.touched = { ...state.touched, [name]: touched };
|
|
225
207
|
emit();
|
|
226
208
|
},
|
|
227
|
-
|
|
209
|
+
getTouched: (name) => state.touched[name] === true,
|
|
210
|
+
setError(name, error) {
|
|
211
|
+
state.errors = { ...state.errors, [name]: error };
|
|
212
|
+
emit();
|
|
213
|
+
},
|
|
214
|
+
getError: (name) => name === undefined ? { ...state.errors } : state.errors[name],
|
|
228
215
|
getFieldWarning: (name) => state.warnings[name],
|
|
216
|
+
getFieldExist: (name) => fields.has(name),
|
|
217
|
+
getInitValue: (name) => (name === undefined ? clone(initialTree) : pathGet(initialTree, name)),
|
|
218
|
+
getInitValues: () => clone(initialTree),
|
|
229
219
|
validateField,
|
|
230
|
-
async validate(
|
|
231
|
-
|
|
220
|
+
async validate(namesOrOptions) {
|
|
221
|
+
// normalize the two call shapes: string[] | { fields?, silent? }.
|
|
222
|
+
const opts = Array.isArray(namesOrOptions)
|
|
223
|
+
? { fields: namesOrOptions }
|
|
224
|
+
: (namesOrOptions ?? {});
|
|
225
|
+
const targets = opts.fields ?? [...fields.keys()];
|
|
226
|
+
// Form-level validator (Semi): when set, it REPLACES per-field rules on
|
|
227
|
+
// validate/submit. Runs against collected values; returns { field: msg }.
|
|
228
|
+
const formValidator = options.validator ?? options.validateFields;
|
|
229
|
+
if (opts.silent) {
|
|
230
|
+
// Silent: compute the result without touching state (no emit / touched / error UI).
|
|
231
|
+
if (formValidator) {
|
|
232
|
+
const errs = (await formValidator(collectValues())) || {};
|
|
233
|
+
return Object.values(errs).every((e) => !e);
|
|
234
|
+
}
|
|
235
|
+
const results = await Promise.all(targets.map((n) => runRules(n, pathGet(state.values, n)).then((r) => r.error)));
|
|
236
|
+
return results.every((e) => !e);
|
|
237
|
+
}
|
|
238
|
+
if (formValidator) {
|
|
239
|
+
const errs = (await formValidator(collectValues())) || {};
|
|
240
|
+
// surface form-level errors on the targeted fields; clear the rest.
|
|
241
|
+
const next = { ...state.errors };
|
|
242
|
+
for (const n of targets)
|
|
243
|
+
next[n] = errs[n];
|
|
244
|
+
state.errors = next;
|
|
245
|
+
emit();
|
|
246
|
+
return targets.every((n) => !errs[n]);
|
|
247
|
+
}
|
|
232
248
|
const results = await Promise.all(targets.map((n) => validateField(n)));
|
|
233
249
|
return results.every((e) => !e);
|
|
234
250
|
},
|
|
235
|
-
|
|
236
|
-
|
|
251
|
+
reset(fields) {
|
|
252
|
+
if (fields && fields.length > 0) {
|
|
253
|
+
// partial reset: only the targeted fields fall back to their initial
|
|
254
|
+
// value (or drop when there is none) and lose error/warning/touched/
|
|
255
|
+
// validating state; everything else is left untouched. Values are read/
|
|
256
|
+
// written by nested path so `users[0].name` resets its leaf, not a flat key.
|
|
257
|
+
let values = state.values;
|
|
258
|
+
const errors = { ...state.errors };
|
|
259
|
+
const warnings = { ...state.warnings };
|
|
260
|
+
const touched = { ...state.touched };
|
|
261
|
+
const validating = { ...state.validating };
|
|
262
|
+
for (const f of fields) {
|
|
263
|
+
if (pathHas(initialTree, f))
|
|
264
|
+
values = pathSet(values, f, pathGet(initialTree, f));
|
|
265
|
+
else
|
|
266
|
+
values = pathRemove(values, f);
|
|
267
|
+
delete errors[f];
|
|
268
|
+
delete warnings[f];
|
|
269
|
+
delete touched[f];
|
|
270
|
+
delete validating[f];
|
|
271
|
+
}
|
|
272
|
+
state.values = values;
|
|
273
|
+
state.errors = errors;
|
|
274
|
+
state.warnings = warnings;
|
|
275
|
+
state.touched = touched;
|
|
276
|
+
state.validating = validating;
|
|
277
|
+
emit();
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
state.values = clone(initialTree);
|
|
237
281
|
state.errors = {};
|
|
238
282
|
state.warnings = {};
|
|
239
283
|
state.touched = {};
|
|
240
284
|
state.validating = {};
|
|
241
285
|
emit();
|
|
242
286
|
},
|
|
243
|
-
|
|
244
|
-
async
|
|
287
|
+
getValues: () => collectValues(),
|
|
288
|
+
async submitForm() {
|
|
245
289
|
state.submitting = true;
|
|
246
290
|
state.submitCount += 1;
|
|
247
291
|
emit();
|
|
248
292
|
const targets = [...fields.keys()];
|
|
249
|
-
|
|
293
|
+
const formValidator = options.validator ?? options.validateFields;
|
|
294
|
+
if (formValidator) {
|
|
295
|
+
// Form-level validator replaces per-field rules on submit (Semi semantics).
|
|
296
|
+
const errs = ((await formValidator(collectValues())) || {});
|
|
297
|
+
const next = { ...state.errors };
|
|
298
|
+
for (const n of targets)
|
|
299
|
+
next[n] = errs[n];
|
|
300
|
+
state.errors = next;
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
await Promise.all(targets.map((n) => validateField(n)));
|
|
304
|
+
}
|
|
250
305
|
const valid = targets.every((n) => !state.errors[n]);
|
|
251
306
|
state.submitting = false;
|
|
252
307
|
emit();
|
package/dist/form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"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"}
|