@volverjs/form-vue 1.0.0-beta.20 → 1.0.0-beta.22
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/types.d.ts +5 -2
- package/package.json +8 -8
- package/src/VvFormTemplate.ts +1 -1
- package/src/types.ts +11 -5
- package/src/utils.ts +8 -12
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { Component, DeepReadonly, Ref, RendererElement, RendererNode, VNode, WatchStopHandle } from 'vue';
|
|
2
|
-
import { z } from 'zod';
|
|
2
|
+
import { z, AnyZodObject, ZodEffects, ZodOptional, ZodTypeAny } from 'zod';
|
|
3
3
|
import { IgnoredUpdater } from '@vueuse/core';
|
|
4
4
|
import { FormFieldType, FormStatus } from './enums';
|
|
5
|
-
|
|
5
|
+
type Depth = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
6
|
+
type DecrementDepth<D extends Depth[number]> = Depth[D];
|
|
7
|
+
export type EffectType<T extends ZodTypeAny, D extends Depth[number] = 10> = D extends 0 ? T : T | ZodOptional<T> | ZodEffects<EffectType<T, DecrementDepth<D>>>;
|
|
8
|
+
export type FormSchema = EffectType<AnyZodObject>;
|
|
6
9
|
export type FormFieldComponentOptions = {
|
|
7
10
|
lazyLoad?: boolean;
|
|
8
11
|
sideEffects?: (type: `${FormFieldType}`) => Promise<void> | void;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volverjs/form-vue",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.22",
|
|
5
5
|
"description": "Vue 3 Forms with @volverjs/ui-vue",
|
|
6
6
|
"author": "8 Wave S.r.l.",
|
|
7
7
|
"license": "MIT",
|
|
@@ -57,23 +57,23 @@
|
|
|
57
57
|
"zod": "^3.23.*"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@antfu/eslint-config": "^3.
|
|
60
|
+
"@antfu/eslint-config": "^3.8.0",
|
|
61
61
|
"@nabla/vite-plugin-eslint": "^2.0.4",
|
|
62
|
-
"@playwright/experimental-ct-vue": "1.48.
|
|
62
|
+
"@playwright/experimental-ct-vue": "1.48.2",
|
|
63
63
|
"@testing-library/vue": "^8.1.0",
|
|
64
64
|
"@vitejs/plugin-vue": "^5.1.4",
|
|
65
|
-
"@volverjs/style": "0.1.
|
|
65
|
+
"@volverjs/style": "0.1.14",
|
|
66
66
|
"@vue/compiler-sfc": "^3.5.12",
|
|
67
67
|
"@vue/runtime-core": "^3.5.12",
|
|
68
68
|
"@vue/test-utils": "^2.4.6",
|
|
69
69
|
"copy": "^0.3.2",
|
|
70
|
-
"eslint": "^9.
|
|
70
|
+
"eslint": "^9.13.0",
|
|
71
71
|
"happy-dom": "^15.7.4",
|
|
72
72
|
"typescript": "^5.6.3",
|
|
73
|
-
"vite": "^5.4.
|
|
74
|
-
"vite-plugin-dts": "^4.
|
|
73
|
+
"vite": "^5.4.10",
|
|
74
|
+
"vite-plugin-dts": "^4.3.0",
|
|
75
75
|
"vite-plugin-externalize-deps": "^0.8.0",
|
|
76
|
-
"vitest": "^2.1.
|
|
76
|
+
"vitest": "^2.1.4"
|
|
77
77
|
},
|
|
78
78
|
"scripts": {
|
|
79
79
|
"lint": "eslint .",
|
package/src/VvFormTemplate.ts
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
unref,
|
|
13
13
|
} from 'vue'
|
|
14
14
|
import type { FormSchema, InjectedFormData, FormTemplate, RenderFunctionOutput } from './types'
|
|
15
|
-
import type { inferFormattedError, TypeOf
|
|
15
|
+
import type { inferFormattedError, TypeOf } from 'zod'
|
|
16
16
|
import type { FormStatus } from './enums'
|
|
17
17
|
|
|
18
18
|
export function defineFormTemplate<Schema extends FormSchema>(formProvideKey: InjectionKey<InjectedFormData<Schema>>, VvFormField: Component) {
|
package/src/types.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import type { Component, DeepReadonly, Ref, RendererElement, RendererNode, VNode, WatchStopHandle } from 'vue'
|
|
2
|
-
import type
|
|
2
|
+
import { z, type AnyZodObject, type ZodEffects, type ZodOptional, type ZodTypeAny } from 'zod'
|
|
3
3
|
import type { IgnoredUpdater } from '@vueuse/core'
|
|
4
4
|
import type { FormFieldType, FormStatus } from './enums'
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
type Depth = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] // Adjust the depth limit as needed
|
|
7
|
+
|
|
8
|
+
type DecrementDepth<D extends Depth[number]> = Depth[D]
|
|
9
|
+
|
|
10
|
+
export type EffectType<T extends ZodTypeAny, D extends Depth[number] = 10> =
|
|
11
|
+
D extends 0
|
|
12
|
+
? T
|
|
13
|
+
: T | ZodOptional<T> | ZodEffects<EffectType<T, DecrementDepth<D>>>
|
|
14
|
+
|
|
15
|
+
export type FormSchema = EffectType<AnyZodObject>
|
|
10
16
|
|
|
11
17
|
export type FormFieldComponentOptions = {
|
|
12
18
|
lazyLoad?: boolean
|
package/src/utils.ts
CHANGED
|
@@ -11,15 +11,11 @@ import {
|
|
|
11
11
|
ZodRecord,
|
|
12
12
|
ZodArray,
|
|
13
13
|
} from 'zod'
|
|
14
|
-
import type { FormSchema } from './types'
|
|
14
|
+
import type { EffectType, FormSchema } from './types'
|
|
15
15
|
|
|
16
16
|
export function defaultObjectBySchema<Schema extends FormSchema>(schema: Schema, original: Partial<z.infer<Schema>> & Record<string, unknown> = {}): Partial<z.infer<Schema>> {
|
|
17
17
|
const getSchemaInnerType = <Type extends ZodTypeAny>(
|
|
18
|
-
schema:
|
|
19
|
-
| Type
|
|
20
|
-
| ZodEffects<Type>
|
|
21
|
-
| ZodEffects<ZodEffects<Type>>
|
|
22
|
-
| ZodOptional<Type>,
|
|
18
|
+
schema: EffectType<Type>,
|
|
23
19
|
) => {
|
|
24
20
|
let toReturn = schema
|
|
25
21
|
while (toReturn instanceof ZodEffects) {
|
|
@@ -48,9 +44,9 @@ export function defaultObjectBySchema<Schema extends FormSchema>(schema: Schema,
|
|
|
48
44
|
}
|
|
49
45
|
const innerType = getSchemaInnerType<AnyZodObject>(schema)
|
|
50
46
|
const unknownKeys
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
= innerType instanceof ZodObject
|
|
48
|
+
? innerType._def.unknownKeys === 'passthrough'
|
|
49
|
+
: false
|
|
54
50
|
return {
|
|
55
51
|
...(unknownKeys ? original : {}),
|
|
56
52
|
...Object.fromEntries(
|
|
@@ -94,7 +90,7 @@ export function defaultObjectBySchema<Schema extends FormSchema>(schema: Schema,
|
|
|
94
90
|
(element && typeof element === 'object'
|
|
95
91
|
? element
|
|
96
92
|
: undefined) as Partial<
|
|
97
|
-
|
|
93
|
+
typeof arrayType
|
|
98
94
|
>,
|
|
99
95
|
),
|
|
100
96
|
),
|
|
@@ -105,7 +101,7 @@ export function defaultObjectBySchema<Schema extends FormSchema>(schema: Schema,
|
|
|
105
101
|
const valueType = getSchemaInnerType(innerType._def.valueType)
|
|
106
102
|
if (valueType instanceof ZodObject) {
|
|
107
103
|
return [key, Object.keys(originalValue).reduce((acc: Record<string, unknown>, recordKey: string) => {
|
|
108
|
-
acc[recordKey] = defaultObjectBySchema(valueType, originalValue[recordKey])
|
|
104
|
+
acc[recordKey] = defaultObjectBySchema(valueType, (originalValue as Record<string, unknown>)[recordKey] as Partial<any> & Record<string, unknown>)
|
|
109
105
|
return acc
|
|
110
106
|
}, {})]
|
|
111
107
|
}
|
|
@@ -117,7 +113,7 @@ export function defaultObjectBySchema<Schema extends FormSchema>(schema: Schema,
|
|
|
117
113
|
innerType,
|
|
118
114
|
originalValue
|
|
119
115
|
&& typeof originalValue === 'object'
|
|
120
|
-
? originalValue
|
|
116
|
+
? (originalValue as Partial<z.infer<Schema>> & Record<string, unknown>)
|
|
121
117
|
: defaultValue,
|
|
122
118
|
),
|
|
123
119
|
]
|