@codeleap/form 7.0.2 → 7.1.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/fields/bool.js +9 -10
- package/dist/fields/bool.js.map +1 -1
- package/dist/fields/date.js +17 -32
- package/dist/fields/date.js.map +1 -1
- package/dist/fields/file.js +9 -10
- package/dist/fields/file.js.map +1 -1
- package/dist/fields/group.js +9 -10
- package/dist/fields/group.js.map +1 -1
- package/dist/fields/index.d.ts +3 -3
- package/dist/fields/index.js +17 -26
- package/dist/fields/index.js.map +1 -1
- package/dist/fields/list.js +11 -14
- package/dist/fields/list.js.map +1 -1
- package/dist/fields/number.js +13 -24
- package/dist/fields/number.js.map +1 -1
- package/dist/fields/selectable.js +13 -14
- package/dist/fields/selectable.js.map +1 -1
- package/dist/fields/text.js +9 -10
- package/dist/fields/text.js.map +1 -1
- package/dist/hooks/index.js +2 -7
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useField.js +5 -8
- package/dist/hooks/useField.js.map +1 -1
- package/dist/hooks/useValidate.js +11 -16
- package/dist/hooks/useValidate.js.map +1 -1
- package/dist/index.js +5 -21
- package/dist/index.js.map +1 -1
- package/dist/lib/Field.d.ts +4 -4
- package/dist/lib/Field.js +52 -47
- package/dist/lib/Field.js.map +1 -1
- package/dist/lib/Form.d.ts +2 -2
- package/dist/lib/Form.js +21 -22
- package/dist/lib/Form.js.map +1 -1
- package/dist/lib/factories.js +2 -5
- package/dist/lib/factories.js.map +1 -1
- package/dist/lib/index.js +2 -20
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/useFieldBinding.js +16 -21
- package/dist/lib/useFieldBinding.js.map +1 -1
- package/dist/types/field.js +1 -2
- package/dist/types/form.js +1 -2
- package/dist/types/globals.js +1 -2
- package/dist/types/index.js +1 -2
- package/dist/types/validation.js +1 -2
- package/dist/validators/index.js +1 -17
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/zod.js +6 -11
- package/dist/validators/zod.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useValidate.js","sourceRoot":"","sources":["../../src/hooks/useValidate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useValidate.js","sourceRoot":"","sources":["../../src/hooks/useValidate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAsC,KAAQ,EAAE,gBAAmB,EAAE,EAAE;IAChG,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,WAAW,CAAA;IAE5C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA;IAE5C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,KAAQ,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAE5C,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,CAAC,CAAC,IAAI;iBACd,CAAA;YACH,CAAC;YAED,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,aAAa,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAElC,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,IAAI,IAAI,CAAA;IAE3C,MAAM,SAAS,GAAG,CAAC,OAAO,CAAA;IAE1B,MAAM,OAAO,GAAG,UAAU,EAAE,aAAa,IAAI,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAA;IAE5E,MAAM,wBAAwB,GAAG,YAAY,CAAA;IAE7C,MAAM,SAAS,GAAG,SAAS,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAE7E,OAAO;QACL,cAAc;QACd,SAAS;QACT,OAAO;KACR,CAAA;AACH,CAAC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./fields"), exports);
|
|
18
|
-
__exportStar(require("./types"), exports);
|
|
19
|
-
__exportStar(require("./lib"), exports);
|
|
20
|
-
__exportStar(require("./validators"), exports);
|
|
21
|
-
__exportStar(require("./hooks"), exports);
|
|
1
|
+
export * from './fields';
|
|
2
|
+
export * from './types';
|
|
3
|
+
export * from './lib';
|
|
4
|
+
export * from './validators';
|
|
5
|
+
export * from './hooks';
|
|
22
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA"}
|
package/dist/lib/Field.d.ts
CHANGED
|
@@ -90,7 +90,7 @@ export declare class Field<T, Validate extends Validator<T, any, any>, Result =
|
|
|
90
90
|
*/
|
|
91
91
|
attach(to: FieldState<T>): void;
|
|
92
92
|
setValue(to: T): void;
|
|
93
|
-
useValue(): T | import("nanostores"
|
|
93
|
+
useValue(): T | import("nanostores").StoreValue<T extends object ? import("nanostores").MapStore<T> : never>;
|
|
94
94
|
resetValue(): void;
|
|
95
95
|
/**
|
|
96
96
|
* Primary React hook for consuming a field inside a component. Subscribes to
|
|
@@ -115,9 +115,9 @@ export declare class Field<T, Validate extends Validator<T, any, any>, Result =
|
|
|
115
115
|
showError: boolean;
|
|
116
116
|
isUnset: boolean;
|
|
117
117
|
validation: ValidationResult<Result, Err>;
|
|
118
|
-
value: T | import("nanostores"
|
|
118
|
+
value: T | import("nanostores").StoreValue<T extends object ? import("nanostores").MapStore<T> : never>;
|
|
119
119
|
};
|
|
120
|
-
value: T | import("nanostores"
|
|
120
|
+
value: T | import("nanostores").StoreValue<T extends object ? import("nanostores").MapStore<T> : never>;
|
|
121
121
|
setValue: (to: T) => void;
|
|
122
122
|
changed: boolean;
|
|
123
123
|
representation: any;
|
|
@@ -161,7 +161,7 @@ export declare class Field<T, Validate extends Validator<T, any, any>, Result =
|
|
|
161
161
|
showError: boolean;
|
|
162
162
|
isUnset: boolean;
|
|
163
163
|
validation: ValidationResult<Result, Err>;
|
|
164
|
-
value: T | import("nanostores"
|
|
164
|
+
value: T | import("nanostores").StoreValue<T extends object ? import("nanostores").MapStore<T> : never>;
|
|
165
165
|
};
|
|
166
166
|
log(level?: string, ...args: any[]): void;
|
|
167
167
|
toInternalValue(v: any): T;
|
package/dist/lib/Field.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const useFieldBinding_1 = require("./useFieldBinding");
|
|
8
|
-
const react_2 = require("react");
|
|
9
|
-
const logger_1 = require("@codeleap/logger");
|
|
1
|
+
import { atom } from 'nanostores';
|
|
2
|
+
import { TypeGuards } from '@codeleap/types';
|
|
3
|
+
import { useStore } from '@nanostores/react';
|
|
4
|
+
import { useFieldBinding } from './useFieldBinding';
|
|
5
|
+
import { createRef, useRef, useState } from 'react';
|
|
6
|
+
import { logger } from '@codeleap/logger';
|
|
10
7
|
/**
|
|
11
8
|
* Thrown inside a validator function to signal a structured validation failure
|
|
12
9
|
* without propagating as an unhandled exception. The `data` payload is forwarded
|
|
@@ -15,13 +12,13 @@ const logger_1 = require("@codeleap/logger");
|
|
|
15
12
|
* Throw this instead of returning `{ isValid: false }` when you need to exit
|
|
16
13
|
* validation from a nested helper that cannot easily return a value.
|
|
17
14
|
*/
|
|
18
|
-
class ValidationError extends Error {
|
|
15
|
+
export class ValidationError extends Error {
|
|
16
|
+
data;
|
|
19
17
|
constructor(data) {
|
|
20
18
|
super();
|
|
21
19
|
this.data = data;
|
|
22
20
|
}
|
|
23
21
|
}
|
|
24
|
-
exports.ValidationError = ValidationError;
|
|
25
22
|
/**
|
|
26
23
|
* Base class for all form fields. Owns the nanostores atom that holds the
|
|
27
24
|
* field's current value, runs synchronous validation on demand, and exposes
|
|
@@ -53,7 +50,30 @@ exports.ValidationError = ValidationError;
|
|
|
53
50
|
* in insertion order. Transformers are global and shared across all field
|
|
54
51
|
* instances via `Field.transformers`.
|
|
55
52
|
*/
|
|
56
|
-
class Field {
|
|
53
|
+
export class Field {
|
|
54
|
+
_type;
|
|
55
|
+
deep;
|
|
56
|
+
state;
|
|
57
|
+
errorRevealed;
|
|
58
|
+
properties = {};
|
|
59
|
+
static transformers = new Map();
|
|
60
|
+
options;
|
|
61
|
+
ref;
|
|
62
|
+
__validationRes;
|
|
63
|
+
initialValue;
|
|
64
|
+
static enableLogs = false;
|
|
65
|
+
static getProps = (field) => {
|
|
66
|
+
throw new Error('Field.getProps not implemented');
|
|
67
|
+
};
|
|
68
|
+
static methodMeasurePosition = (field, wrapperRef) => {
|
|
69
|
+
throw new Error('Field.measurePosition not implemented');
|
|
70
|
+
};
|
|
71
|
+
static methodScrollTo = (field, scrollRef, measure) => {
|
|
72
|
+
throw new Error('Field.scrollTo not implemented');
|
|
73
|
+
};
|
|
74
|
+
static methodGetPadding = (field) => {
|
|
75
|
+
throw new Error('Field.getPadding not implemented');
|
|
76
|
+
};
|
|
57
77
|
/**
|
|
58
78
|
* Marks the field's error as visible. Typically called by `Form.validate`
|
|
59
79
|
* when `revealErrors: true` is passed, or imperatively after a failed submit.
|
|
@@ -75,11 +95,10 @@ class Field {
|
|
|
75
95
|
return this.errorRevealed.get();
|
|
76
96
|
}
|
|
77
97
|
constructor(options) {
|
|
78
|
-
this.properties = {};
|
|
79
98
|
this.options = options;
|
|
80
|
-
this.ref =
|
|
99
|
+
this.ref = createRef();
|
|
81
100
|
this.loadState();
|
|
82
|
-
this.errorRevealed =
|
|
101
|
+
this.errorRevealed = atom(false);
|
|
83
102
|
this.setValue = this.setValue.bind(this);
|
|
84
103
|
this.use = this.use.bind(this);
|
|
85
104
|
this.useBinding = this.useBinding.bind(this);
|
|
@@ -99,7 +118,10 @@ class Field {
|
|
|
99
118
|
}
|
|
100
119
|
toInternalProperties(options) {
|
|
101
120
|
const internalKeys = new Set(['name', 'defaultValue', 'state', 'validate', 'loader', 'onValueChange']);
|
|
102
|
-
const values =
|
|
121
|
+
const values = {
|
|
122
|
+
name: this.name,
|
|
123
|
+
...Object.fromEntries(Object.entries(options).filter(([key]) => !internalKeys.has(key)))
|
|
124
|
+
};
|
|
103
125
|
return Object.assign({ field: this }, values);
|
|
104
126
|
}
|
|
105
127
|
/**
|
|
@@ -119,7 +141,7 @@ class Field {
|
|
|
119
141
|
return this.state.set(to);
|
|
120
142
|
}
|
|
121
143
|
useValue() {
|
|
122
|
-
const value =
|
|
144
|
+
const value = useStore(this.state);
|
|
123
145
|
return value;
|
|
124
146
|
}
|
|
125
147
|
resetValue() {
|
|
@@ -154,19 +176,18 @@ class Field {
|
|
|
154
176
|
};
|
|
155
177
|
}
|
|
156
178
|
useBinding(...args) {
|
|
157
|
-
|
|
179
|
+
useFieldBinding(this.ref, ...args);
|
|
158
180
|
}
|
|
159
181
|
changed() {
|
|
160
182
|
return this.state.get() != this.initialValue;
|
|
161
183
|
}
|
|
162
184
|
// If we make this async, the js engine will not delay further execution while the funcion is not done. This way we wait until we know wheter there's a promise or not
|
|
163
185
|
loadState() {
|
|
164
|
-
var _a, _b, _c;
|
|
165
186
|
let defaultValuePromise = undefined;
|
|
166
187
|
let defaultValue = undefined;
|
|
167
|
-
if (
|
|
188
|
+
if (TypeGuards.isFunction(this.options.defaultValue)) {
|
|
168
189
|
const v = this.options.defaultValue();
|
|
169
|
-
if (
|
|
190
|
+
if (TypeGuards.isPromise(v)) {
|
|
170
191
|
defaultValuePromise = v;
|
|
171
192
|
}
|
|
172
193
|
else {
|
|
@@ -174,15 +195,15 @@ class Field {
|
|
|
174
195
|
}
|
|
175
196
|
}
|
|
176
197
|
else {
|
|
177
|
-
const v =
|
|
178
|
-
if (
|
|
198
|
+
const v = this.options?.defaultValue;
|
|
199
|
+
if (TypeGuards.isPromise(v)) {
|
|
179
200
|
defaultValuePromise = v;
|
|
180
201
|
}
|
|
181
202
|
else {
|
|
182
203
|
defaultValue = v;
|
|
183
204
|
}
|
|
184
205
|
}
|
|
185
|
-
this.state =
|
|
206
|
+
this.state = this?.options?.state ?? atom(defaultValue);
|
|
186
207
|
if (!defaultValuePromise) {
|
|
187
208
|
this.initialValue = defaultValue;
|
|
188
209
|
}
|
|
@@ -205,7 +226,7 @@ class Field {
|
|
|
205
226
|
formatLog(...args) {
|
|
206
227
|
const [firstArgument, ...otherArgs] = args;
|
|
207
228
|
let PREFIX = `(FIELD: ${this.name})`;
|
|
208
|
-
if (
|
|
229
|
+
if (TypeGuards.isString(firstArgument)) {
|
|
209
230
|
PREFIX += ` ${firstArgument}`;
|
|
210
231
|
}
|
|
211
232
|
else {
|
|
@@ -228,7 +249,7 @@ class Field {
|
|
|
228
249
|
*/
|
|
229
250
|
validate(value) {
|
|
230
251
|
const validate = this.options.validate;
|
|
231
|
-
const valueToCheck =
|
|
252
|
+
const valueToCheck = TypeGuards.isUndefined(value) ? this.state.get() : this.toInternalValue(value);
|
|
232
253
|
try {
|
|
233
254
|
const result = validate(valueToCheck, {});
|
|
234
255
|
return result;
|
|
@@ -256,19 +277,18 @@ class Field {
|
|
|
256
277
|
* first element's `.message` when `error` is an array.
|
|
257
278
|
*/
|
|
258
279
|
useValidation() {
|
|
259
|
-
var _a, _b;
|
|
260
280
|
const value = this.useValue();
|
|
261
|
-
const revealed =
|
|
281
|
+
const revealed = useStore(this.errorRevealed);
|
|
262
282
|
const isUnset = typeof value === 'undefined';
|
|
263
|
-
const startedUnset =
|
|
283
|
+
const startedUnset = useRef(isUnset).current;
|
|
264
284
|
const isSet = !isUnset;
|
|
265
285
|
const validation = this.validate(value);
|
|
266
286
|
const isValid = validation.isValid;
|
|
267
287
|
const isInvalid = !isValid;
|
|
268
288
|
const hasChanged = this.initialValue != value;
|
|
269
|
-
const message =
|
|
289
|
+
const message = validation.readableError ?? (Array.isArray(validation.error) ? validation.error[0]?.message : undefined);
|
|
270
290
|
const errorDisplayRequiresBlur = startedUnset;
|
|
271
|
-
const [hasBlurred, setHasBlurred] =
|
|
291
|
+
const [hasBlurred, setHasBlurred] = useState(false);
|
|
272
292
|
const showError = isInvalid && (errorDisplayRequiresBlur ? revealed || hasBlurred : true);
|
|
273
293
|
return {
|
|
274
294
|
onInputBlurred() {
|
|
@@ -289,7 +309,7 @@ class Field {
|
|
|
289
309
|
}
|
|
290
310
|
log(level = 'log', ...args) {
|
|
291
311
|
if (Field.enableLogs)
|
|
292
|
-
|
|
312
|
+
logger[level](...this.formatLog(...args));
|
|
293
313
|
}
|
|
294
314
|
toInternalValue(v) {
|
|
295
315
|
return v;
|
|
@@ -333,19 +353,4 @@ class Field {
|
|
|
333
353
|
return Field.methodGetPadding(this);
|
|
334
354
|
}
|
|
335
355
|
}
|
|
336
|
-
exports.Field = Field;
|
|
337
|
-
Field.transformers = new Map();
|
|
338
|
-
Field.enableLogs = false;
|
|
339
|
-
Field.getProps = (field) => {
|
|
340
|
-
throw new Error('Field.getProps not implemented');
|
|
341
|
-
};
|
|
342
|
-
Field.methodMeasurePosition = (field, wrapperRef) => {
|
|
343
|
-
throw new Error('Field.measurePosition not implemented');
|
|
344
|
-
};
|
|
345
|
-
Field.methodScrollTo = (field, scrollRef, measure) => {
|
|
346
|
-
throw new Error('Field.scrollTo not implemented');
|
|
347
|
-
};
|
|
348
|
-
Field.methodGetPadding = (field) => {
|
|
349
|
-
throw new Error('Field.getPadding not implemented');
|
|
350
|
-
};
|
|
351
356
|
//# sourceMappingURL=Field.js.map
|
package/dist/lib/Field.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/lib/Field.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/lib/Field.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/Form.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ declare class Form<T extends FormDef> {
|
|
|
34
34
|
get isChanged(): boolean;
|
|
35
35
|
changed(): boolean;
|
|
36
36
|
get isValid(): boolean;
|
|
37
|
-
slice<K extends FieldPaths<T>>(field: K): import("nanostores"
|
|
37
|
+
slice<K extends FieldPaths<T>>(field: K): import("nanostores").WritableAtom<unknown>;
|
|
38
38
|
iterFields<V>(cb: (field: FieldTuples<T>, index: number) => V): V[];
|
|
39
39
|
/**
|
|
40
40
|
* Bulk-sets field values from a partial record. Boolean fields require an
|
|
@@ -62,7 +62,7 @@ declare class Form<T extends FormDef> {
|
|
|
62
62
|
* the field key does not exist in this form's shape, making typos a runtime
|
|
63
63
|
* error rather than a silent no-op.
|
|
64
64
|
*/
|
|
65
|
-
register(field: FieldPaths<T>): import("
|
|
65
|
+
register(field: FieldPaths<T>): import("..").IFieldProps;
|
|
66
66
|
use<Selected>(selector: FormSelector<T, Selected>): Selected;
|
|
67
67
|
useReset(): void;
|
|
68
68
|
useShared<Selected>(selector: FormSelector<T, Selected>): Selected;
|
package/dist/lib/Form.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const store_1 = require("@codeleap/store");
|
|
6
|
-
const types_1 = require("@codeleap/types");
|
|
7
|
-
const react_1 = require("react");
|
|
8
|
-
const hooks_1 = require("@codeleap/hooks");
|
|
1
|
+
import { createStateSlice, globalState } from "@codeleap/store";
|
|
2
|
+
import { TypeGuards } from "@codeleap/types";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
4
|
+
import { useUnmount } from "@codeleap/hooks";
|
|
9
5
|
function buildState(def) {
|
|
10
6
|
const stateArg = {};
|
|
11
7
|
for (const [name, field] of Object.entries(def)) {
|
|
@@ -38,10 +34,13 @@ function buildState(def) {
|
|
|
38
34
|
* flip `errorRevealed` on every field, triggering error display in the UI.
|
|
39
35
|
*/
|
|
40
36
|
class Form {
|
|
37
|
+
id;
|
|
38
|
+
fields;
|
|
39
|
+
state;
|
|
41
40
|
constructor(id, shape) {
|
|
42
41
|
this.id = id;
|
|
43
42
|
this.fields = shape;
|
|
44
|
-
this.state =
|
|
43
|
+
this.state = globalState(buildState(this.fields));
|
|
45
44
|
this.attachState();
|
|
46
45
|
this.use = this.use.bind(this);
|
|
47
46
|
this.useShared = this.useShared.bind(this);
|
|
@@ -65,7 +64,7 @@ class Form {
|
|
|
65
64
|
return Object.values(res).every((result) => result.isValid);
|
|
66
65
|
}
|
|
67
66
|
slice(field) {
|
|
68
|
-
const fieldSlice =
|
|
67
|
+
const fieldSlice = createStateSlice(this.state, (v) => v[field], (value) => {
|
|
69
68
|
return {
|
|
70
69
|
[field]: value
|
|
71
70
|
};
|
|
@@ -89,8 +88,8 @@ class Form {
|
|
|
89
88
|
*/
|
|
90
89
|
setValues(values) {
|
|
91
90
|
this.iterFields(([name, field]) => {
|
|
92
|
-
const value = values
|
|
93
|
-
if (field._type === 'BOOLEAN' &&
|
|
91
|
+
const value = values?.[name];
|
|
92
|
+
if (field._type === 'BOOLEAN' && TypeGuards.isBoolean(value))
|
|
94
93
|
field.setValue(value);
|
|
95
94
|
else if (value)
|
|
96
95
|
field.setValue(value);
|
|
@@ -123,14 +122,14 @@ class Form {
|
|
|
123
122
|
}
|
|
124
123
|
}
|
|
125
124
|
validate(options) {
|
|
126
|
-
const { fields, revealErrors } = options
|
|
127
|
-
const validateFields = fields
|
|
125
|
+
const { fields, revealErrors } = options ?? {};
|
|
126
|
+
const validateFields = fields ?? Object.keys(this.fields);
|
|
128
127
|
const results = this.iterFields(([name, field]) => {
|
|
129
128
|
if (!validateFields.includes(name))
|
|
130
129
|
return null;
|
|
131
130
|
return [name, field.validate()];
|
|
132
131
|
});
|
|
133
|
-
const resultMap = Object.fromEntries(results.filter((v) => !
|
|
132
|
+
const resultMap = Object.fromEntries(results.filter((v) => !TypeGuards.isNil(v)));
|
|
134
133
|
if (revealErrors) {
|
|
135
134
|
this.iterFields(([_, field]) => {
|
|
136
135
|
field.revealError();
|
|
@@ -155,16 +154,16 @@ class Form {
|
|
|
155
154
|
return value;
|
|
156
155
|
}
|
|
157
156
|
useReset() {
|
|
158
|
-
|
|
157
|
+
useUnmount(() => {
|
|
159
158
|
this.resetValues();
|
|
160
159
|
});
|
|
161
160
|
}
|
|
162
161
|
useShared(selector) {
|
|
163
|
-
const [selected, setSelected] =
|
|
164
|
-
const reselect =
|
|
162
|
+
const [selected, setSelected] = useState(() => selector(this));
|
|
163
|
+
const reselect = useCallback(() => {
|
|
165
164
|
setSelected(selector(this));
|
|
166
165
|
}, [selector]);
|
|
167
|
-
|
|
166
|
+
useEffect(() => {
|
|
168
167
|
return this.state.listen((value, previous) => {
|
|
169
168
|
if (value != previous) {
|
|
170
169
|
reselect();
|
|
@@ -183,8 +182,8 @@ class Form {
|
|
|
183
182
|
* Note: `def` is only read on the first render — changing it after mount has
|
|
184
183
|
* no effect.
|
|
185
184
|
*/
|
|
186
|
-
function useForm(name, def) {
|
|
187
|
-
const form =
|
|
185
|
+
export function useForm(name, def) {
|
|
186
|
+
const form = useMemo(() => {
|
|
188
187
|
return new Form(name, def);
|
|
189
188
|
}, [name]);
|
|
190
189
|
return form;
|
|
@@ -195,7 +194,7 @@ function useForm(name, def) {
|
|
|
195
194
|
* any individual component. Values are **not** automatically reset on unmount;
|
|
196
195
|
* call `resetValues()` explicitly when needed.
|
|
197
196
|
*/
|
|
198
|
-
function form(...args) {
|
|
197
|
+
export function form(...args) {
|
|
199
198
|
return new Form(...args);
|
|
200
199
|
}
|
|
201
200
|
//# sourceMappingURL=Form.js.map
|
package/dist/lib/Form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.js","sourceRoot":"","sources":["../../src/lib/Form.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Form.js","sourceRoot":"","sources":["../../src/lib/Form.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/factories.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fieldFactory = fieldFactory;
|
|
4
1
|
/**
|
|
5
2
|
* Wraps a `Field` subclass constructor in a factory function, eliminating the
|
|
6
3
|
* need to call `new` at the call site and improving inference of the
|
|
@@ -9,10 +6,10 @@ exports.fieldFactory = fieldFactory;
|
|
|
9
6
|
*
|
|
10
7
|
* All entries in the `fields` namespace are built with this helper.
|
|
11
8
|
*/
|
|
12
|
-
function fieldFactory(cls) {
|
|
9
|
+
export function fieldFactory(cls) {
|
|
13
10
|
return (options) => {
|
|
14
11
|
// @ts-expect-error
|
|
15
|
-
return new cls(options
|
|
12
|
+
return new cls(options ?? {});
|
|
16
13
|
};
|
|
17
14
|
}
|
|
18
15
|
//# sourceMappingURL=factories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../src/lib/factories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../src/lib/factories.tsx"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAI1B,GAAM;IACN,OAAO,CAAwC,OAAW,EAAgC,EAAE;QAE1F,mBAAmB;QACnB,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IAC/B,CAAC,CAAA;AACH,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.Field = void 0;
|
|
18
|
-
__exportStar(require("./Form"), exports);
|
|
19
|
-
var Field_1 = require("./Field");
|
|
20
|
-
Object.defineProperty(exports, "Field", { enumerable: true, get: function () { return Field_1.Field; } });
|
|
1
|
+
export * from './Form';
|
|
2
|
+
export { Field } from './Field';
|
|
21
3
|
//# sourceMappingURL=index.js.map
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA"}
|
|
@@ -1,16 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.useFieldBinding = useFieldBinding;
|
|
13
|
-
const react_1 = require("react");
|
|
1
|
+
import { useImperativeHandle } from "react";
|
|
14
2
|
/**
|
|
15
3
|
* Attaches an imperative handle to `ref` via `useImperativeHandle`. Every
|
|
16
4
|
* method in {@link IFieldRef} is given a default implementation that throws
|
|
@@ -22,23 +10,28 @@ const react_1 = require("react");
|
|
|
22
10
|
* `deps` is forwarded directly to `useImperativeHandle`; include anything
|
|
23
11
|
* `impl` closes over that can change between renders.
|
|
24
12
|
*/
|
|
25
|
-
function useFieldBinding(ref, impl, deps = []) {
|
|
13
|
+
export function useFieldBinding(ref, impl, deps = []) {
|
|
26
14
|
const notImplemented = (method) => {
|
|
27
15
|
throw new Error(`ref.${method} not implemented`);
|
|
28
16
|
};
|
|
29
|
-
|
|
17
|
+
useImperativeHandle(ref, () => ({
|
|
18
|
+
blur: () => {
|
|
30
19
|
notImplemented('blur');
|
|
31
|
-
},
|
|
20
|
+
},
|
|
21
|
+
emit: () => {
|
|
32
22
|
notImplemented('emit');
|
|
33
|
-
},
|
|
23
|
+
},
|
|
24
|
+
focus: () => {
|
|
34
25
|
notImplemented('focus');
|
|
35
|
-
},
|
|
26
|
+
},
|
|
36
27
|
// @ts-expect-error
|
|
37
28
|
getValue: () => {
|
|
38
29
|
notImplemented('getValue');
|
|
39
|
-
},
|
|
30
|
+
},
|
|
31
|
+
scrollIntoView: async () => {
|
|
40
32
|
notImplemented('scrollIntoView');
|
|
41
|
-
}
|
|
33
|
+
},
|
|
34
|
+
hideValue() {
|
|
42
35
|
notImplemented('hideValue');
|
|
43
36
|
},
|
|
44
37
|
revealValue() {
|
|
@@ -46,6 +39,8 @@ function useFieldBinding(ref, impl, deps = []) {
|
|
|
46
39
|
},
|
|
47
40
|
toggleValueVisibility() {
|
|
48
41
|
notImplemented('toggleValueVisibility');
|
|
49
|
-
}
|
|
42
|
+
},
|
|
43
|
+
...impl
|
|
44
|
+
}), deps);
|
|
50
45
|
}
|
|
51
46
|
//# sourceMappingURL=useFieldBinding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFieldBinding.js","sourceRoot":"","sources":["../../src/lib/useFieldBinding.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFieldBinding.js","sourceRoot":"","sources":["../../src/lib/useFieldBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAG3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAI,GAA+C,EAAE,IAA2B,EAAE,OAA6B,EAAE;IAE9I,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,OAAO,MAAM,kBAAkB,CAAC,CAAA;IAClD,CAAC,CAAA;IAGD,mBAAmB,CAAC,GAAG,EAAE,GAAI,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,GAAG,EAAE;YACT,cAAc,CAAC,MAAM,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,cAAc,CAAC,MAAM,CAAC,CAAA;QACxB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,cAAc,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC;QACD,mBAAmB;QACnB,QAAQ,EAAE,GAAG,EAAE;YACb,cAAc,CAAC,UAAU,CAAC,CAAA;QAC5B,CAAC;QACD,cAAc,EAAE,KAAK,IAAI,EAAE;YACzB,cAAc,CAAC,gBAAgB,CAAC,CAAA;QAClC,CAAC;QACD,SAAS;YACP,cAAc,CAAC,WAAW,CAAC,CAAA;QAC7B,CAAC;QACD,WAAW;YACT,cAAc,CAAC,aAAa,CAAC,CAAA;QAC/B,CAAC;QACD,qBAAqB;YACnB,cAAc,CAAC,uBAAuB,CAAC,CAAA;QACzC,CAAC;QACD,GAAG,IAAI;KACR,CAAC,EAAE,IAAI,CAAC,CAAA;AAEX,CAAC"}
|
package/dist/types/field.js
CHANGED
package/dist/types/form.js
CHANGED
package/dist/types/globals.js
CHANGED
package/dist/types/index.js
CHANGED