@chenzy-design/core 0.3.1 → 0.4.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.
- 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
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* form-validate — rule engine bridged onto `async-validator` (same library Semi
|
|
3
|
+
* uses). Built-in rules are converted to an async-validator schema and run; the
|
|
4
|
+
* `warningOnly` superset (AntD-style soft warnings, absent from async-validator)
|
|
5
|
+
* is layered on top by running the warning rules through the same engine but
|
|
6
|
+
* routing their failures to the warning channel instead of the error channel.
|
|
7
|
+
*
|
|
8
|
+
* i18n bridge: async-validator's default messages use `%s`/fullField templates.
|
|
9
|
+
* To keep our MessageDescriptor + resolveMessage i18n contract intact, each rule
|
|
10
|
+
* carries a precomputed `message` string (from `resolveMessage`) so the engine
|
|
11
|
+
* emits exactly our localized text.
|
|
12
|
+
*/
|
|
13
|
+
import Schema from 'async-validator';
|
|
14
|
+
/**
|
|
15
|
+
* Compute the display message for a built-in rule failure (before async-validator
|
|
16
|
+
* runs), honoring an explicit `rule.message` override, else the i18n descriptor.
|
|
17
|
+
*/
|
|
18
|
+
function builtinMessage(rule, label, resolve) {
|
|
19
|
+
if (rule.message !== undefined)
|
|
20
|
+
return rule.message;
|
|
21
|
+
// pick the descriptor matching the (single) built-in check this rule expresses.
|
|
22
|
+
if (rule.required)
|
|
23
|
+
return resolve({ key: 'Form.required', params: { label } });
|
|
24
|
+
if (rule.type === 'email' || rule.type === 'url')
|
|
25
|
+
return resolve({ key: 'Form.typeError', params: { label } });
|
|
26
|
+
if (rule.type === 'number' || rule.type === 'integer' || rule.type === 'float')
|
|
27
|
+
return resolve({ key: 'Form.typeError', params: { label } });
|
|
28
|
+
if (rule.type !== undefined)
|
|
29
|
+
return resolve({ key: 'Form.typeError', params: { label } });
|
|
30
|
+
if (rule.minLength !== undefined)
|
|
31
|
+
return resolve({ key: 'Form.minLength', params: { min: rule.minLength } });
|
|
32
|
+
if (rule.maxLength !== undefined)
|
|
33
|
+
return resolve({ key: 'Form.maxLength', params: { max: rule.maxLength } });
|
|
34
|
+
if (rule.min !== undefined)
|
|
35
|
+
return resolve({ key: 'Form.min', params: { min: rule.min } });
|
|
36
|
+
if (rule.max !== undefined)
|
|
37
|
+
return resolve({ key: 'Form.max', params: { max: rule.max } });
|
|
38
|
+
if (rule.pattern)
|
|
39
|
+
return resolve({ key: 'Form.pattern', params: { label } });
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
/** async-validator `type` alias: our `number` maps to its numeric semantics. */
|
|
43
|
+
function avType(t) {
|
|
44
|
+
// async-validator uses `number`/`integer`/`float`/`array`/`enum`/... verbatim.
|
|
45
|
+
return t;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Convert one of our Rules to an async-validator RuleItem. `value`/`values` are
|
|
49
|
+
* threaded so a custom `validator(value, values)` (our signature) can be adapted
|
|
50
|
+
* to async-validator's `validator(rule, value, callback)`.
|
|
51
|
+
*
|
|
52
|
+
* Length semantics: our `minLength`/`maxLength` are string-length checks; we
|
|
53
|
+
* emulate them with a `validator` (async-validator's `min`/`max` on a string
|
|
54
|
+
* measure string length too, but only paired with an explicit `type:'string'` —
|
|
55
|
+
* a custom validator keeps behavior identical to the previous hand-rolled engine).
|
|
56
|
+
*/
|
|
57
|
+
function toAvRule(rule, label, values, resolve) {
|
|
58
|
+
const message = builtinMessage(rule, label, resolve);
|
|
59
|
+
const item = {};
|
|
60
|
+
if (message !== undefined)
|
|
61
|
+
item.message = message;
|
|
62
|
+
// custom validator: adapt (value, values) → callback. A truthy string return
|
|
63
|
+
// is the (overriding) error message; falsy/undefined means pass.
|
|
64
|
+
if (rule.validator) {
|
|
65
|
+
const fn = rule.validator;
|
|
66
|
+
item.validator = (_r, value, callback) => {
|
|
67
|
+
try {
|
|
68
|
+
const res = fn(value, values);
|
|
69
|
+
if (res instanceof Promise) {
|
|
70
|
+
res
|
|
71
|
+
.then((m) => callback(m ? String(m) : undefined))
|
|
72
|
+
.catch((e) => callback(e instanceof Error ? e.message : String(e)));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
callback(res ? String(res) : undefined);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
callback(e instanceof Error ? e.message : String(e));
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
return item;
|
|
82
|
+
}
|
|
83
|
+
if (rule.required)
|
|
84
|
+
item.required = true;
|
|
85
|
+
// string-length checks (our supersets of async-validator len/min/max)
|
|
86
|
+
if (rule.minLength !== undefined || rule.maxLength !== undefined) {
|
|
87
|
+
const min = rule.minLength;
|
|
88
|
+
const max = rule.maxLength;
|
|
89
|
+
item.validator = (_r, value, callback) => {
|
|
90
|
+
// empty values are skipped by required/other rules; length rules only fire
|
|
91
|
+
// on non-empty input (mirrors the previous engine's `isEmpty` short-circuit).
|
|
92
|
+
if (value === undefined || value === null || value === '')
|
|
93
|
+
return callback();
|
|
94
|
+
const len = String(value).length;
|
|
95
|
+
if (min !== undefined && len < min)
|
|
96
|
+
return callback(message);
|
|
97
|
+
if (max !== undefined && len > max)
|
|
98
|
+
return callback(message);
|
|
99
|
+
callback();
|
|
100
|
+
};
|
|
101
|
+
return item;
|
|
102
|
+
}
|
|
103
|
+
// email/url/number → our own regexes/coercion (keeps messages + edge cases
|
|
104
|
+
// identical to the prior engine, avoids async-validator's stricter url/email).
|
|
105
|
+
if (rule.type === 'email' || rule.type === 'url' || rule.type === 'number') {
|
|
106
|
+
const kind = rule.type;
|
|
107
|
+
item.validator = (_r, value, callback) => {
|
|
108
|
+
if (value === undefined || value === null || value === '')
|
|
109
|
+
return callback();
|
|
110
|
+
const s = String(value);
|
|
111
|
+
const ok = kind === 'email'
|
|
112
|
+
? /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s)
|
|
113
|
+
: kind === 'url'
|
|
114
|
+
? /^https?:\/\/[^\s]+$/.test(s)
|
|
115
|
+
: !Number.isNaN(Number(s));
|
|
116
|
+
callback(ok ? undefined : message);
|
|
117
|
+
};
|
|
118
|
+
return item;
|
|
119
|
+
}
|
|
120
|
+
// remaining async-validator-native `type` (array/enum/integer/float/object/
|
|
121
|
+
// boolean/date/hex): delegate straight to async-validator's built-in type check.
|
|
122
|
+
if (rule.type !== undefined) {
|
|
123
|
+
const t = avType(rule.type);
|
|
124
|
+
if (t !== undefined)
|
|
125
|
+
item.type = t;
|
|
126
|
+
}
|
|
127
|
+
// numeric range (async-validator `min`/`max` on numbers) — emulate to keep the
|
|
128
|
+
// exact message + coercion the prior engine used.
|
|
129
|
+
if (rule.min !== undefined || rule.max !== undefined) {
|
|
130
|
+
const min = rule.min;
|
|
131
|
+
const max = rule.max;
|
|
132
|
+
item.validator = (_r, value, callback) => {
|
|
133
|
+
if (value === undefined || value === null || value === '')
|
|
134
|
+
return callback();
|
|
135
|
+
const n = Number(value);
|
|
136
|
+
if (min !== undefined && n < min)
|
|
137
|
+
return callback(message);
|
|
138
|
+
if (max !== undefined && n > max)
|
|
139
|
+
return callback(message);
|
|
140
|
+
callback();
|
|
141
|
+
};
|
|
142
|
+
return item;
|
|
143
|
+
}
|
|
144
|
+
// pattern
|
|
145
|
+
if (rule.pattern) {
|
|
146
|
+
const re = rule.pattern;
|
|
147
|
+
item.validator = (_r, value, callback) => {
|
|
148
|
+
if (value === undefined || value === null || value === '')
|
|
149
|
+
return callback();
|
|
150
|
+
callback(re.test(String(value)) ? undefined : message);
|
|
151
|
+
};
|
|
152
|
+
return item;
|
|
153
|
+
}
|
|
154
|
+
// async-validator-native extras that pass straight through
|
|
155
|
+
if (rule.len !== undefined)
|
|
156
|
+
item.len = rule.len;
|
|
157
|
+
if (rule.whitespace !== undefined)
|
|
158
|
+
item.whitespace = rule.whitespace;
|
|
159
|
+
if (rule.enum !== undefined)
|
|
160
|
+
item.enum = rule.enum;
|
|
161
|
+
return item;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Run one field's rules through async-validator (built-ins + custom), splitting
|
|
165
|
+
* `warningOnly` failures into the warning channel. Returns the first blocking
|
|
166
|
+
* error and the first warning, honoring `stopValidateWithError`.
|
|
167
|
+
*/
|
|
168
|
+
export async function runFieldRules(field, value, values, rules, label, resolve, stopWithError) {
|
|
169
|
+
const blocking = rules.filter((r) => !r.warningOnly);
|
|
170
|
+
const warns = rules.filter((r) => r.warningOnly);
|
|
171
|
+
const error = await runSchema(field, value, values, blocking, label, resolve, stopWithError);
|
|
172
|
+
// warnings always accumulate independently (never affect blocking validity).
|
|
173
|
+
const warning = await runSchema(field, value, values, warns, label, resolve, true);
|
|
174
|
+
const out = {};
|
|
175
|
+
if (error !== undefined)
|
|
176
|
+
out.error = error;
|
|
177
|
+
if (warning !== undefined)
|
|
178
|
+
out.warning = warning;
|
|
179
|
+
return out;
|
|
180
|
+
}
|
|
181
|
+
async function runSchema(field, value, values, rules, label, resolve, first) {
|
|
182
|
+
if (rules.length === 0)
|
|
183
|
+
return undefined;
|
|
184
|
+
const descriptor = {
|
|
185
|
+
[field]: rules.map((r) => toAvRule(r, label, values, resolve)),
|
|
186
|
+
};
|
|
187
|
+
const schema = new Schema(descriptor);
|
|
188
|
+
try {
|
|
189
|
+
// `first: true` stops at the first failing rule (our stopValidateWithError).
|
|
190
|
+
await schema.validate({ [field]: value }, { first, suppressWarning: true });
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
const e = err;
|
|
195
|
+
if (e.errors && e.errors.length > 0) {
|
|
196
|
+
// first blocking error message (empty string preserved as a real failure).
|
|
197
|
+
const m = e.errors[0]?.message;
|
|
198
|
+
return m === undefined ? '' : String(m);
|
|
199
|
+
}
|
|
200
|
+
// schema/grammar error → surface its message
|
|
201
|
+
return err instanceof Error ? err.message : String(err);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=form-validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-validate.js","sourceRoot":"","sources":["../src/form-validate.ts"],"names":[],"mappings":"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"}
|
package/dist/form.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
export type FormValues = Record<string, unknown>;
|
|
2
2
|
/** Validation message: a string, an i18n-key descriptor, or false/undefined for "no error". */
|
|
3
3
|
export type ValidateResult = string | undefined;
|
|
4
|
+
/**
|
|
5
|
+
* async-validator `type` union (a superset of the old email/url/number). Any
|
|
6
|
+
* value here routes through async-validator; email/url/number keep our own
|
|
7
|
+
* regex/coercion + i18n messages for backward compatibility.
|
|
8
|
+
*/
|
|
9
|
+
export type RuleType = 'string' | 'number' | 'boolean' | 'method' | 'regexp' | 'integer' | 'float' | 'array' | 'object' | 'enum' | 'date' | 'url' | 'hex' | 'email';
|
|
4
10
|
export interface Rule {
|
|
5
11
|
required?: boolean;
|
|
6
12
|
/** numeric / string-length / value-range checks */
|
|
@@ -9,7 +15,17 @@ export interface Rule {
|
|
|
9
15
|
minLength?: number;
|
|
10
16
|
maxLength?: number;
|
|
11
17
|
pattern?: RegExp;
|
|
12
|
-
|
|
18
|
+
/**
|
|
19
|
+
* value type check, delegated to async-validator (Semi-aligned). Supersets the
|
|
20
|
+
* old email/url/number: `array`/`enum`/`integer`/`float`/`object`/... now work.
|
|
21
|
+
*/
|
|
22
|
+
type?: RuleType;
|
|
23
|
+
/** exact length check (async-validator `len`; strings/arrays). */
|
|
24
|
+
len?: number;
|
|
25
|
+
/** reject whitespace-only strings (async-validator `whitespace`). */
|
|
26
|
+
whitespace?: boolean;
|
|
27
|
+
/** allowed values for `type: 'enum'` (async-validator `enum`). */
|
|
28
|
+
enum?: Array<string | number | boolean | null | undefined>;
|
|
13
29
|
/** sync or async custom validator; return an error message or undefined */
|
|
14
30
|
validator?: (value: unknown, values: FormValues) => ValidateResult | Promise<ValidateResult>;
|
|
15
31
|
/** override message for the built-in rule on this entry */
|
|
@@ -45,7 +61,7 @@ export interface FieldConfig {
|
|
|
45
61
|
trigger?: ValidateTrigger | ValidateTrigger[];
|
|
46
62
|
/**
|
|
47
63
|
* pure transform applied to the field's value when collecting values for
|
|
48
|
-
* `
|
|
64
|
+
* `getValues`/`submitForm` (spec §4.2 L88). Does NOT mutate state — the live
|
|
49
65
|
* `values` keep the raw value; only the collected payload is transformed.
|
|
50
66
|
*/
|
|
51
67
|
transform?: (value: unknown, values: FormValues) => unknown;
|
|
@@ -90,38 +106,95 @@ export interface FormOptions {
|
|
|
90
106
|
* from the collected `values` payload.
|
|
91
107
|
*/
|
|
92
108
|
allowEmpty?: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Form-level custom validator (Semi `validator`, recommended). Called on
|
|
111
|
+
* submit / `validate()`. Receives all collected values; returns an errors map
|
|
112
|
+
* ({ [field]: message }) — an empty map (or empty return) means valid.
|
|
113
|
+
* May be sync or async (return a Promise). When set, per-field rules/validators
|
|
114
|
+
* are NOT run on submit/validate (Semi semantics: form-level validator wins).
|
|
115
|
+
*/
|
|
116
|
+
validator?: (values: FormValues) => FieldErrors | Promise<FieldErrors> | void | Promise<void>;
|
|
117
|
+
/** deprecated alias of `validator`, kept for compatibility (Semi `validateFields`). */
|
|
118
|
+
validateFields?: (values: FormValues) => FieldErrors | Promise<FieldErrors> | void | Promise<void>;
|
|
119
|
+
}
|
|
120
|
+
/** options for `formApi.validate` (Semi validate options, v2.94.0+). */
|
|
121
|
+
export interface ValidateOptions {
|
|
122
|
+
/** limit validation to these fields; omit to validate all registered fields. */
|
|
123
|
+
fields?: string[];
|
|
124
|
+
/** compute the result without mutating form state (no UI error, no touched, no emit). */
|
|
125
|
+
silent?: boolean;
|
|
93
126
|
}
|
|
94
127
|
export interface FormApi {
|
|
95
|
-
|
|
128
|
+
/** the current form state snapshot (Semi getFormState). */
|
|
129
|
+
getFormState(): FormState;
|
|
96
130
|
subscribe(listener: (state: FormState) => void): () => void;
|
|
97
131
|
registerField(name: string, config?: FieldConfig): () => void;
|
|
98
132
|
/**
|
|
99
133
|
* resolved validation triggers for a field: its own `trigger` override, else
|
|
100
134
|
* the form default. Always a normalized array (spec §4 L65/L84). The render
|
|
101
|
-
* layer uses this to decide which DOM events to wire.
|
|
135
|
+
* layer uses this to decide which DOM events to wire. Headless superset —
|
|
136
|
+
* Semi has no equivalent; kept un-renamed.
|
|
102
137
|
*/
|
|
103
138
|
getFieldTrigger(name: string): ValidateTrigger[];
|
|
104
|
-
|
|
105
|
-
|
|
139
|
+
/**
|
|
140
|
+
* read a field's value, or (when `name` is omitted) a shallow snapshot of all
|
|
141
|
+
* values (Semi getValue(field?)).
|
|
142
|
+
*/
|
|
143
|
+
getValue(name?: string): unknown;
|
|
144
|
+
setValue(name: string, value: unknown, opts?: {
|
|
106
145
|
validate?: boolean;
|
|
107
146
|
}): void;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
147
|
+
/**
|
|
148
|
+
* batch-write values. Default merges into existing values; `config.isOverride`
|
|
149
|
+
* replaces the whole values object (Semi setValues(values, {isOverride})).
|
|
150
|
+
*/
|
|
151
|
+
setValues(values: FormValues, config?: {
|
|
152
|
+
isOverride?: boolean;
|
|
153
|
+
}): void;
|
|
154
|
+
setTouched(name: string, touched?: boolean): void;
|
|
155
|
+
/** read a field's touched state (Semi getTouched). */
|
|
156
|
+
getTouched(name: string): boolean;
|
|
157
|
+
/** command-imperatively set a field's error (e.g. backend validation) (Semi setError). */
|
|
158
|
+
setError(name: string, error: string | undefined): void;
|
|
159
|
+
/**
|
|
160
|
+
* read a field's error, or (when `name` is omitted) the whole errors map
|
|
161
|
+
* (Semi getError(field?)).
|
|
162
|
+
*/
|
|
163
|
+
getError(name?: string): string | undefined | FieldErrors;
|
|
164
|
+
/** the field's non-blocking warning (from a `warningOnly` rule), if any. Headless superset. */
|
|
112
165
|
getFieldWarning(name: string): string | undefined;
|
|
113
|
-
/**
|
|
166
|
+
/** whether a field is currently registered (Semi getFieldExist). */
|
|
167
|
+
getFieldExist(name: string): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* a field's initial value, or (when `name` is omitted) a snapshot of all
|
|
170
|
+
* initial values (Semi getInitValue(field?)).
|
|
171
|
+
*/
|
|
172
|
+
getInitValue(name?: string): unknown;
|
|
173
|
+
/** snapshot of all initial values (Semi getInitValues). */
|
|
174
|
+
getInitValues(): FormValues;
|
|
175
|
+
/** validate one field; resolves to its (blocking) error (or undefined). Headless superset. */
|
|
114
176
|
validateField(name: string): Promise<string | undefined>;
|
|
115
|
-
/**
|
|
116
|
-
|
|
117
|
-
|
|
177
|
+
/**
|
|
178
|
+
* validate all (or given) fields; resolves to true when valid.
|
|
179
|
+
* - `validate()` / `validate(['a','b'])`: validate all / named fields, surfacing errors in the UI.
|
|
180
|
+
* - `validate({ silent: true })` / `validate({ fields, silent: true })`: silent validation —
|
|
181
|
+
* compute the result WITHOUT touching form state (no error display, no `touched`, no re-render).
|
|
182
|
+
* Useful for "should I fire the request?" checks (Semi `validate({ silent })`, v2.94.0+).
|
|
183
|
+
*/
|
|
184
|
+
validate(namesOrOptions?: string[] | ValidateOptions): Promise<boolean>;
|
|
185
|
+
/**
|
|
186
|
+
* reset fields to their initial values and clear errors/warnings/touched.
|
|
187
|
+
* With `fields` given, only those fields are reset; otherwise the whole form
|
|
188
|
+
* (Semi reset(fields?)).
|
|
189
|
+
*/
|
|
190
|
+
reset(fields?: string[]): void;
|
|
118
191
|
/**
|
|
119
192
|
* collected values honoring `allowEmpty` (spec §4 L70): with `allowEmpty:false`
|
|
120
|
-
* keys whose value is empty (`undefined`/`null`/`''`) are dropped.
|
|
193
|
+
* keys whose value is empty (`undefined`/`null`/`''`) are dropped (Semi getValues).
|
|
121
194
|
*/
|
|
122
|
-
|
|
123
|
-
/** run validation then resolve { valid, values, errors } */
|
|
124
|
-
|
|
195
|
+
getValues(): FormValues;
|
|
196
|
+
/** run validation then resolve { valid, values, errors } (Semi submitForm). */
|
|
197
|
+
submitForm(): Promise<{
|
|
125
198
|
valid: boolean;
|
|
126
199
|
values: FormValues;
|
|
127
200
|
errors: FieldErrors;
|
package/dist/form.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"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"}
|