@codeleap/form 7.0.2 → 7.1.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/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 +10 -9
package/dist/fields/bool.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const Field_1 = require("../lib/Field");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const validators_1 = require("../validators");
|
|
1
|
+
import { Field } from "../lib/Field";
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { zodValidator } from "../validators";
|
|
7
4
|
/**
|
|
8
5
|
* Field for boolean values (checkboxes, toggles). `Form.setValues` treats
|
|
9
6
|
* this field specially: it will only set a value when the incoming value is
|
|
10
7
|
* strictly `boolean`, because falsy coercion would prevent setting `false`.
|
|
11
8
|
*/
|
|
12
|
-
class BooleanField extends
|
|
9
|
+
export class BooleanField extends Field {
|
|
10
|
+
_type = "BOOLEAN";
|
|
13
11
|
constructor(options) {
|
|
14
|
-
super(
|
|
15
|
-
|
|
12
|
+
super({
|
|
13
|
+
validate: zodValidator(z.boolean()),
|
|
14
|
+
...options
|
|
15
|
+
});
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
exports.BooleanField = BooleanField;
|
|
19
18
|
//# sourceMappingURL=bool.js.map
|
package/dist/fields/bool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bool.js","sourceRoot":"","sources":["../../src/fields/bool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bool.js","sourceRoot":"","sources":["../../src/fields/bool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAS5C;;;;GAIG;AACH,MAAM,OAAO,YAAgD,SAAQ,KAAwB;IAC3F,KAAK,GAAG,SAAS,CAAA;IAEjB,YAAY,OAAsC;QAChD,KAAK,CAAC;YACJ,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,CAAwB;YAC1D,GAAG,OAAO;SACX,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/fields/date.js
CHANGED
|
@@ -1,33 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
t[p] = s[p];
|
|
6
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
-
t[p[i]] = s[p[i]];
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.DateField = void 0;
|
|
18
|
-
const Field_1 = require("../lib/Field");
|
|
19
|
-
const zod_1 = require("zod");
|
|
20
|
-
const validators_1 = require("../validators");
|
|
21
|
-
const dayjs_1 = __importDefault(require("dayjs"));
|
|
1
|
+
import { Field } from "../lib/Field";
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { zodValidator } from "../validators";
|
|
4
|
+
import dayjs from 'dayjs';
|
|
22
5
|
function normalizeToDate(val) {
|
|
23
6
|
if (!val)
|
|
24
7
|
return undefined;
|
|
25
8
|
if (val instanceof Date)
|
|
26
9
|
return val;
|
|
27
|
-
if (
|
|
10
|
+
if (dayjs.isDayjs(val))
|
|
28
11
|
return val.startOf('day').toDate();
|
|
29
12
|
if (typeof val === 'string') {
|
|
30
|
-
const parsed = (
|
|
13
|
+
const parsed = dayjs(val);
|
|
31
14
|
return parsed.isValid() ? parsed.startOf('day').toDate() : undefined;
|
|
32
15
|
}
|
|
33
16
|
return undefined;
|
|
@@ -40,24 +23,26 @@ function normalizeToDate(val) {
|
|
|
40
23
|
* `undefined`, which fails the `z.date()` check. Bounds are enforced at the
|
|
41
24
|
* start of the day (`startOf('day')`) for dayjs inputs.
|
|
42
25
|
*/
|
|
43
|
-
class DateField extends
|
|
26
|
+
export class DateField extends Field {
|
|
27
|
+
_type = "DATE";
|
|
44
28
|
constructor(options) {
|
|
45
|
-
const { minimumDate, maximumDate
|
|
46
|
-
const schema =
|
|
29
|
+
const { minimumDate, maximumDate, ...rest } = options;
|
|
30
|
+
const schema = z.preprocess((val) => {
|
|
47
31
|
const normalized = normalizeToDate(val);
|
|
48
32
|
if (!normalized || isNaN(normalized.getTime()))
|
|
49
33
|
return undefined;
|
|
50
34
|
return normalized;
|
|
51
|
-
},
|
|
35
|
+
}, z.date()
|
|
52
36
|
.refine(d => !minimumDate || d >= minimumDate, {
|
|
53
|
-
message: `Date must be on or after ${minimumDate
|
|
37
|
+
message: `Date must be on or after ${minimumDate?.toDateString()}`,
|
|
54
38
|
})
|
|
55
39
|
.refine(d => !maximumDate || d <= maximumDate, {
|
|
56
|
-
message: `Date must be on or before ${maximumDate
|
|
40
|
+
message: `Date must be on or before ${maximumDate?.toDateString()}`,
|
|
57
41
|
}));
|
|
58
|
-
super(
|
|
59
|
-
|
|
42
|
+
super({
|
|
43
|
+
validate: zodValidator(schema),
|
|
44
|
+
...options,
|
|
45
|
+
});
|
|
60
46
|
}
|
|
61
47
|
}
|
|
62
|
-
exports.DateField = DateField;
|
|
63
48
|
//# sourceMappingURL=date.js.map
|
package/dist/fields/date.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/fields/date.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/fields/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAE1B,IAAI,GAAG,YAAY,IAAI;QAAE,OAAO,GAAG,CAAA;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAA;IAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACzB,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IACtE,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,SAA0C,SAAQ,KAAqB;IAClF,KAAK,GAAG,MAAM,CAAA;IAEd,YAAY,OAAmC;QAC7C,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;QAErD,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAY,EAAE,EAAE;YAC3C,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;YAEvC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAAE,OAAO,SAAS,CAAA;YAChE,OAAO,UAAU,CAAA;QACnB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;aACR,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,WAAW,EAAE;YAC7C,OAAO,EAAE,4BAA4B,WAAW,EAAE,YAAY,EAAE,EAAE;SACnE,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,WAAW,EAAE;YAC7C,OAAO,EAAE,6BAA6B,WAAW,EAAE,YAAY,EAAE,EAAE;SACpE,CAAC,CACH,CAAA;QAED,KAAK,CAAC;YACJ,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAwB;YACrD,GAAG,OAAO;SACX,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/fields/file.js
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const Field_1 = require("../lib/Field");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const validators_1 = require("../validators");
|
|
1
|
+
import { Field } from "../lib/Field";
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { zodValidator } from "../validators";
|
|
7
4
|
/**
|
|
8
5
|
* Field for file uploads. The value type is `any` because the shape of a
|
|
9
6
|
* "file" differs between web (`File` / `FileList`) and React Native (asset
|
|
10
7
|
* descriptor objects). Supply a custom `validate` function to enforce whatever
|
|
11
8
|
* shape your platform produces.
|
|
12
9
|
*/
|
|
13
|
-
class FileField extends
|
|
10
|
+
export class FileField extends Field {
|
|
11
|
+
_type = "FILE";
|
|
14
12
|
constructor(options) {
|
|
15
|
-
super(
|
|
16
|
-
|
|
13
|
+
super({
|
|
14
|
+
validate: zodValidator(z.any()),
|
|
15
|
+
...options
|
|
16
|
+
});
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
exports.FileField = FileField;
|
|
20
19
|
//# sourceMappingURL=file.js.map
|
package/dist/fields/file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/fields/file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/fields/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAO5C;;;;;GAKG;AACH,MAAM,OAAO,SAA0C,SAAQ,KAAoB;IACjF,KAAK,GAAG,MAAM,CAAA;IAEd,YAAY,OAAmC;QAC7C,KAAK,CAAC;YACJ,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAwB;YACtD,GAAG,OAAO;SACX,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/fields/group.js
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const Field_1 = require("../lib/Field");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const validators_1 = require("../validators");
|
|
1
|
+
import { Field } from "../lib/Field";
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { zodValidator } from "../validators";
|
|
7
4
|
/**
|
|
8
5
|
* Field that represents a selected group or category, stored as a string key.
|
|
9
6
|
* Structurally identical to `TextField` but carries the `"group"` type tag so
|
|
10
7
|
* platform renderers can distinguish it and render a group-picker control
|
|
11
8
|
* instead of a free-text input.
|
|
12
9
|
*/
|
|
13
|
-
class GroupField extends
|
|
10
|
+
export class GroupField extends Field {
|
|
11
|
+
_type = "group";
|
|
14
12
|
constructor(options) {
|
|
15
|
-
super(
|
|
16
|
-
|
|
13
|
+
super({
|
|
14
|
+
validate: zodValidator(z.string()),
|
|
15
|
+
...options
|
|
16
|
+
});
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
exports.GroupField = GroupField;
|
|
20
19
|
//# sourceMappingURL=group.js.map
|
package/dist/fields/group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/fields/group.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/fields/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAQ5C;;;;;GAKG;AACH,MAAM,OAAO,UAA4C,SAAQ,KAAuB;IACtF,KAAK,GAAG,OAAO,CAAA;IAEf,YAAY,OAAoC;QAC9C,KAAK,CAAC;YACJ,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAwB;YACzD,GAAG,OAAO;SACX,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/fields/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare const fields: {
|
|
|
23
23
|
text: <A extends {
|
|
24
24
|
name?: string;
|
|
25
25
|
defaultValue?: string | null | undefined;
|
|
26
|
-
state?: import("nanostores"
|
|
26
|
+
state?: import("nanostores").WritableAtom<string> | undefined;
|
|
27
27
|
validate?: import("./text").TextValidator<any, any> | undefined;
|
|
28
28
|
loader?: ((form: any) => Partial<Omit<import("..").FieldOptions<string, import("./text").TextValidator<any, any>>, "loader">>) | undefined;
|
|
29
29
|
onValueChange?: ((newValue: string) => void) | undefined;
|
|
@@ -46,7 +46,7 @@ export declare const fields: {
|
|
|
46
46
|
boolean: <A extends {
|
|
47
47
|
name?: string;
|
|
48
48
|
defaultValue?: boolean | null | undefined;
|
|
49
|
-
state?: import("nanostores"
|
|
49
|
+
state?: import("nanostores").WritableAtom<boolean> | undefined;
|
|
50
50
|
validate?: import("./bool").BooleanValidator<any, any> | undefined;
|
|
51
51
|
loader?: ((form: any) => Partial<Omit<import("..").FieldOptions<boolean, import("./bool").BooleanValidator<any, any>>, "loader">>) | undefined;
|
|
52
52
|
onValueChange?: ((newValue: boolean) => void) | undefined;
|
|
@@ -54,7 +54,7 @@ export declare const fields: {
|
|
|
54
54
|
selectable: <A extends {
|
|
55
55
|
name?: string;
|
|
56
56
|
defaultValue?: (string | number) | null | undefined;
|
|
57
|
-
state?: import("nanostores"
|
|
57
|
+
state?: import("nanostores").WritableAtom<string | number> | undefined;
|
|
58
58
|
validate?: import("./selectable").SelectableValidator<string | number, any, any> | undefined;
|
|
59
59
|
loader?: ((form: any) => Partial<Omit<import("..").FieldOptions<string | number, import("./selectable").SelectableValidator<string | number, any, any>>, "loader">>) | undefined;
|
|
60
60
|
onValueChange?: ((newValue: string | number) => void) | undefined;
|
package/dist/fields/index.js
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const number_1 = require("./number");
|
|
10
|
-
Object.defineProperty(exports, "NumberField", { enumerable: true, get: function () { return number_1.NumberField; } });
|
|
11
|
-
const bool_1 = require("./bool");
|
|
12
|
-
Object.defineProperty(exports, "BooleanField", { enumerable: true, get: function () { return bool_1.BooleanField; } });
|
|
13
|
-
const selectable_1 = require("./selectable");
|
|
14
|
-
Object.defineProperty(exports, "SelectableField", { enumerable: true, get: function () { return selectable_1.SelectableField; } });
|
|
15
|
-
const date_1 = require("./date");
|
|
16
|
-
Object.defineProperty(exports, "DateField", { enumerable: true, get: function () { return date_1.DateField; } });
|
|
17
|
-
const file_1 = require("./file");
|
|
18
|
-
Object.defineProperty(exports, "FileField", { enumerable: true, get: function () { return file_1.FileField; } });
|
|
1
|
+
import { fieldFactory } from "../lib/factories";
|
|
2
|
+
import { TextField } from "./text";
|
|
3
|
+
import { ListField, listFieldFactory } from "./list";
|
|
4
|
+
import { NumberField } from "./number";
|
|
5
|
+
import { BooleanField } from "./bool";
|
|
6
|
+
import { SelectableField } from "./selectable";
|
|
7
|
+
import { DateField } from "./date";
|
|
8
|
+
import { FileField } from "./file";
|
|
19
9
|
/**
|
|
20
10
|
* Convenience namespace that exposes factory functions for every built-in field
|
|
21
11
|
* type. Prefer these over calling constructors directly — they provide better
|
|
@@ -30,13 +20,14 @@ Object.defineProperty(exports, "FileField", { enumerable: true, get: function ()
|
|
|
30
20
|
* `fieldFactory`, because `ListField` requires the `item` option's type to be
|
|
31
21
|
* inferred at the call site.
|
|
32
22
|
*/
|
|
33
|
-
|
|
34
|
-
text:
|
|
35
|
-
list:
|
|
36
|
-
number:
|
|
37
|
-
boolean:
|
|
38
|
-
selectable:
|
|
39
|
-
date:
|
|
40
|
-
file:
|
|
23
|
+
export const fields = {
|
|
24
|
+
text: fieldFactory(TextField),
|
|
25
|
+
list: listFieldFactory,
|
|
26
|
+
number: fieldFactory(NumberField),
|
|
27
|
+
boolean: fieldFactory(BooleanField),
|
|
28
|
+
selectable: fieldFactory(SelectableField),
|
|
29
|
+
date: fieldFactory(DateField),
|
|
30
|
+
file: fieldFactory(FileField),
|
|
41
31
|
};
|
|
32
|
+
export { TextField, ListField, NumberField, BooleanField, SelectableField, DateField, FileField, };
|
|
42
33
|
//# sourceMappingURL=index.js.map
|
package/dist/fields/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,EAAE,SAAS,EAAG,gBAAgB,EAAC,MAAM,QAAQ,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAGlC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC;IAC7B,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC;IACjC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC;IACnC,UAAU,EAAE,YAAY,CAAC,eAAe,CAAC;IACzC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC;IAC7B,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC;CAC9B,CAAA;AAED,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,SAAS,EACT,SAAS,GACV,CAAA"}
|
package/dist/fields/list.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ListField = void 0;
|
|
4
|
-
exports.listFieldFactory = listFieldFactory;
|
|
5
|
-
const Field_1 = require("../lib/Field");
|
|
1
|
+
import { Field } from "../lib/Field";
|
|
6
2
|
/**
|
|
7
3
|
* Field that holds an array of values, each validated by a delegate `item`
|
|
8
4
|
* field. The built-in validator iterates every element through
|
|
@@ -13,17 +9,19 @@ const Field_1 = require("../lib/Field");
|
|
|
13
9
|
* The `item` field acts as a prototype — it is not mounted independently and
|
|
14
10
|
* does not own its own atom. Do not call `use()` on it directly.
|
|
15
11
|
*/
|
|
16
|
-
class ListField extends
|
|
12
|
+
export class ListField extends Field {
|
|
13
|
+
_type = "LIST";
|
|
17
14
|
constructor(options) {
|
|
18
|
-
super(
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
super({
|
|
16
|
+
...options,
|
|
17
|
+
validate: ((v, form) => {
|
|
18
|
+
if (!options.item?.validate)
|
|
21
19
|
return {
|
|
22
20
|
isValid: true
|
|
23
21
|
};
|
|
24
22
|
const errors = [];
|
|
25
23
|
for (const value of v) {
|
|
26
|
-
const validation =
|
|
24
|
+
const validation = options.item?.validate?.(value);
|
|
27
25
|
if (!validation.isValid) {
|
|
28
26
|
errors.push(validation);
|
|
29
27
|
}
|
|
@@ -37,11 +35,10 @@ class ListField extends Field_1.Field {
|
|
|
37
35
|
return {
|
|
38
36
|
isValid: true,
|
|
39
37
|
};
|
|
40
|
-
})
|
|
41
|
-
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
42
40
|
}
|
|
43
41
|
}
|
|
44
|
-
exports.ListField = ListField;
|
|
45
42
|
/**
|
|
46
43
|
* Convenience factory for `ListField`. Unlike `fieldFactory`-based helpers,
|
|
47
44
|
* `ListField` requires an `item` option whose generic type must be inferred at
|
|
@@ -49,7 +46,7 @@ exports.ListField = ListField;
|
|
|
49
46
|
* exists to provide a consistent `fields.list(...)` call signature alongside
|
|
50
47
|
* the other entries in the `fields` namespace.
|
|
51
48
|
*/
|
|
52
|
-
function listFieldFactory(options) {
|
|
49
|
+
export function listFieldFactory(options) {
|
|
53
50
|
return new ListField(options);
|
|
54
51
|
}
|
|
55
52
|
//# sourceMappingURL=list.js.map
|
package/dist/fields/list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/fields/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/fields/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AA6BpC;;;;;;;;;GASG;AACH,MAAM,OAAO,SAAqC,SAAQ,KAAiD;IACzG,KAAK,GAAG,MAAM,CAAA;IAEd,YAAY,OAA4B;QACtC,KAAK,CAAC;YACJ,GAAG,OAAO;YACV,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;gBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ;oBAAE,OAAO;wBAClC,OAAO,EAAE,IAAI;qBACd,CAAA;gBAED,MAAM,MAAM,GAAG,EAAE,CAAA;gBAEjB,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAA;oBAElD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;wBACxB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;oBACzB,CAAC;gBACH,CAAC;gBAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,MAAM;qBACd,CAAA;gBACH,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC,CAAuB;SAC8C,CAAC,CAAA;IAC3E,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAA2B,OAA4B;IACrF,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC"}
|
package/dist/fields/number.js
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
-
t[p] = s[p];
|
|
6
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
-
t[p[i]] = s[p[i]];
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
};
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.NumberField = void 0;
|
|
15
|
-
const Field_1 = require("../lib/Field");
|
|
16
|
-
const zod_1 = require("zod");
|
|
17
|
-
const validators_1 = require("../validators");
|
|
1
|
+
import { Field } from "../lib/Field";
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { zodValidator } from "../validators";
|
|
18
4
|
const MAX_VALID_DIGITS = 1000000000000000; // maximum number of digits that the input supports to perform operations
|
|
19
5
|
/**
|
|
20
6
|
* Field for numeric values. Supports both single numbers and arrays of numbers
|
|
@@ -24,16 +10,19 @@ const MAX_VALID_DIGITS = 1000000000000000; // maximum number of digits that the
|
|
|
24
10
|
* supports for arithmetic operations). Values outside the range fail
|
|
25
11
|
* validation.
|
|
26
12
|
*/
|
|
27
|
-
class NumberField extends
|
|
13
|
+
export class NumberField extends Field {
|
|
14
|
+
_type = "NUMBER";
|
|
28
15
|
constructor(options) {
|
|
29
|
-
const { min = 0, max = MAX_VALID_DIGITS, defaultValue
|
|
16
|
+
const { min = 0, max = MAX_VALID_DIGITS, defaultValue, ...others } = options;
|
|
30
17
|
const isMultiple = Array.isArray(defaultValue);
|
|
31
|
-
const zScheme =
|
|
32
|
-
super(
|
|
18
|
+
const zScheme = z.number().min(min).max(max);
|
|
19
|
+
super({
|
|
20
|
+
validate: zodValidator(isMultiple ? z.array(zScheme) : zScheme),
|
|
21
|
+
min,
|
|
33
22
|
max,
|
|
34
|
-
defaultValue
|
|
35
|
-
|
|
23
|
+
defaultValue,
|
|
24
|
+
...others
|
|
25
|
+
});
|
|
36
26
|
}
|
|
37
27
|
}
|
|
38
|
-
exports.NumberField = NumberField;
|
|
39
28
|
//# sourceMappingURL=number.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/fields/number.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/fields/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAY5C,MAAM,gBAAgB,GAAG,gBAAgB,CAAA,CAAC,yEAAyE;AAEnH;;;;;;;GAOG;AACH,MAAM,OAAO,WAA8C,SAAQ,KAAkC;IACnG,KAAK,GAAG,QAAQ,CAAA;IAEhB,YAAY,OAAqC;QAC/C,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,gBAAgB,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,CAAA;QAE5E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAE9C,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAE5C,KAAK,CAAC;YACJ,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAwB;YACtF,GAAG;YACH,GAAG;YACH,YAAY;YACZ,GAAG,MAAM;SACsB,CAAC,CAAA;IACpC,CAAC;CACF"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const Field_1 = require("../lib/Field");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const validators_1 = require("../validators");
|
|
1
|
+
import { Field } from "../lib/Field";
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { zodValidator } from "../validators";
|
|
7
4
|
/**
|
|
8
5
|
* Field for single or multi-select inputs whose options are a fixed list of
|
|
9
6
|
* string/number keys. `minItems` defaults to `1` (at least one selection
|
|
@@ -12,15 +9,17 @@ const validators_1 = require("../validators");
|
|
|
12
9
|
* value or an array, so the same field type covers both radio-style and
|
|
13
10
|
* checkbox-style UIs.
|
|
14
11
|
*/
|
|
15
|
-
class SelectableField extends
|
|
12
|
+
export class SelectableField extends Field {
|
|
13
|
+
_type = "SELECTABLE";
|
|
16
14
|
constructor(options) {
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
const { minItems = 1, maxItems = options?.options?.length } = options;
|
|
16
|
+
const zScheme = z.string().or(z.number());
|
|
17
|
+
super({
|
|
18
|
+
validate: zodValidator(z.array(zScheme).min(minItems).max(maxItems).or(zScheme)),
|
|
19
|
+
minItems,
|
|
20
|
+
maxItems,
|
|
21
|
+
...options,
|
|
22
|
+
});
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
exports.SelectableField = SelectableField;
|
|
26
25
|
//# sourceMappingURL=selectable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectable.js","sourceRoot":"","sources":["../../src/fields/selectable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"selectable.js","sourceRoot":"","sources":["../../src/fields/selectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAc5C;;;;;;;GAOG;AACH,MAAM,OAAO,eAA0E,SAAQ,KAAkB;IAC/G,KAAK,GAAG,YAAY,CAAA;IAEpB,YAAY,OAA4C;QACtD,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;QAErE,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAEzC,KAAK,CAAC;YACJ,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAwB;YACvG,QAAQ;YACR,QAAQ;YACR,GAAG,OAAO;SACX,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/fields/text.js
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const Field_1 = require("../lib/Field");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const validators_1 = require("../validators");
|
|
1
|
+
import { Field } from "../lib/Field";
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { zodValidator } from "../validators";
|
|
7
4
|
/**
|
|
8
5
|
* Field for plain string values. Ships with a `z.string()` fallback validator
|
|
9
6
|
* so the field is always valid when no custom `validate` option is provided.
|
|
10
7
|
* Accepts `secure` (password masking) and `multiline` hints that are forwarded
|
|
11
8
|
* as props to the underlying input component.
|
|
12
9
|
*/
|
|
13
|
-
class TextField extends
|
|
10
|
+
export class TextField extends Field {
|
|
11
|
+
_type = "TEXT";
|
|
14
12
|
constructor(options) {
|
|
15
|
-
super(
|
|
16
|
-
|
|
13
|
+
super({
|
|
14
|
+
validate: zodValidator(z.string().optional()),
|
|
15
|
+
...options
|
|
16
|
+
});
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
exports.TextField = TextField;
|
|
20
19
|
//# sourceMappingURL=text.js.map
|
package/dist/fields/text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/fields/text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/fields/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAY5C;;;;;GAKG;AACH,MAAM,OAAO,SAA0C,SAAQ,KAAuB;IACpF,KAAK,GAAG,MAAM,CAAA;IAEd,YAAY,OAAmC;QAC7C,KAAK,CAAC;YACJ,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAwB;YACpE,GAAG,OAAO;SACX,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.useValidate = exports.useField = void 0;
|
|
4
|
-
var useField_1 = require("./useField");
|
|
5
|
-
Object.defineProperty(exports, "useField", { enumerable: true, get: function () { return useField_1.useField; } });
|
|
6
|
-
var useValidate_1 = require("./useValidate");
|
|
7
|
-
Object.defineProperty(exports, "useValidate", { enumerable: true, get: function () { return useValidate_1.useValidate; } });
|
|
1
|
+
export { useField } from './useField';
|
|
2
|
+
export { useValidate } from './useValidate';
|
|
8
3
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/hooks/useField.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useField = useField;
|
|
4
|
-
const react_1 = require("react");
|
|
1
|
+
import { useMemo } from "react";
|
|
5
2
|
/**
|
|
6
3
|
* Convenience hook for components that accept an optional `field` prop. When
|
|
7
4
|
* `field` is provided it is used directly; when it is absent (falsy), a
|
|
@@ -15,13 +12,13 @@ const react_1 = require("react");
|
|
|
15
12
|
* `params` are forwarded to `field.use()` in either branch, so imperative
|
|
16
13
|
* ref bindings work regardless of which field is active.
|
|
17
14
|
*/
|
|
18
|
-
function useField(field, params, defaultField) {
|
|
15
|
+
export function useField(field, params, defaultField) {
|
|
19
16
|
if (field) {
|
|
20
|
-
return field.use(params
|
|
17
|
+
return field.use(params?.[0], params?.[1]);
|
|
21
18
|
}
|
|
22
|
-
const tempField =
|
|
19
|
+
const tempField = useMemo(() => {
|
|
23
20
|
return defaultField();
|
|
24
21
|
}, []);
|
|
25
|
-
return tempField.use(params[0], params
|
|
22
|
+
return tempField.use(params[0], params?.[1]);
|
|
26
23
|
}
|
|
27
24
|
//# sourceMappingURL=useField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useField.js","sourceRoot":"","sources":["../../src/hooks/useField.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useField.js","sourceRoot":"","sources":["../../src/hooks/useField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAG/B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CAAkC,KAAQ,EAAE,MAA4B,EAAE,YAAqB;IACrH,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAyB,CAAA;IACpE,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,OAAO,YAAY,EAAE,CAAA;IACvB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAyB,CAAA;AACtE,CAAC"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.useValidate = void 0;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const Field_1 = require("../lib/Field");
|
|
1
|
+
import { useCallback, useRef, useState } from 'react';
|
|
2
|
+
import { ValidationError } from '../lib/Field';
|
|
6
3
|
/**
|
|
7
4
|
* Standalone validation hook for values managed outside a `Field` instance.
|
|
8
5
|
* Useful when you have a raw state value and a validator function but do not
|
|
@@ -19,18 +16,17 @@ const Field_1 = require("../lib/Field");
|
|
|
19
16
|
* A {@link ValidationError} thrown by `providedValidate` is caught and
|
|
20
17
|
* normalised; other exceptions propagate.
|
|
21
18
|
*/
|
|
22
|
-
const useValidate = (value, providedValidate) => {
|
|
23
|
-
|
|
24
|
-
const [hasBlurred, setHasBlurred] = (0, react_1.useState)(false);
|
|
19
|
+
export const useValidate = (value, providedValidate) => {
|
|
20
|
+
const [hasBlurred, setHasBlurred] = useState(false);
|
|
25
21
|
const isUnset = typeof value === 'undefined';
|
|
26
|
-
const startedUnset =
|
|
27
|
-
const validate =
|
|
22
|
+
const startedUnset = useRef(isUnset).current;
|
|
23
|
+
const validate = useCallback((value) => {
|
|
28
24
|
try {
|
|
29
|
-
const result = providedValidate
|
|
25
|
+
const result = providedValidate?.(value, {});
|
|
30
26
|
return result;
|
|
31
27
|
}
|
|
32
28
|
catch (e) {
|
|
33
|
-
if (e instanceof
|
|
29
|
+
if (e instanceof ValidationError) {
|
|
34
30
|
return {
|
|
35
31
|
isValid: false,
|
|
36
32
|
error: e.data
|
|
@@ -39,13 +35,13 @@ const useValidate = (value, providedValidate) => {
|
|
|
39
35
|
throw e;
|
|
40
36
|
}
|
|
41
37
|
}, []);
|
|
42
|
-
const onInputBlurred =
|
|
38
|
+
const onInputBlurred = useCallback(() => {
|
|
43
39
|
setHasBlurred(true);
|
|
44
40
|
}, []);
|
|
45
41
|
const validation = validate(value);
|
|
46
|
-
const isValid =
|
|
42
|
+
const isValid = validation?.isValid ?? true;
|
|
47
43
|
const isInvalid = !isValid;
|
|
48
|
-
const message =
|
|
44
|
+
const message = validation?.readableError ?? validation?.error?.[0]?.message;
|
|
49
45
|
const errorDisplayRequiresBlur = startedUnset;
|
|
50
46
|
const showError = isInvalid && (errorDisplayRequiresBlur ? hasBlurred : true);
|
|
51
47
|
return {
|
|
@@ -54,5 +50,4 @@ const useValidate = (value, providedValidate) => {
|
|
|
54
50
|
message,
|
|
55
51
|
};
|
|
56
52
|
};
|
|
57
|
-
exports.useValidate = useValidate;
|
|
58
53
|
//# sourceMappingURL=useValidate.js.map
|