@jcoreio/zod-forms 2.0.0 → 2.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/ConditionalValidator.d.mts +25 -0
- package/ConditionalValidator.d.mts.map +1 -0
- package/ConditionalValidator.d.ts +12 -12
- package/ConditionalValidator.d.ts.map +1 -1
- package/FieldPath.d.mts +24 -0
- package/FieldPath.d.mts.map +1 -0
- package/FieldPath.d.ts +13 -15
- package/FieldPath.d.ts.map +1 -1
- package/FormAction.d.mts +15 -0
- package/FormAction.d.mts.map +1 -0
- package/FormAction.d.ts +12 -12
- package/FormAction.d.ts.map +1 -1
- package/FormContext.d.mts +40 -0
- package/FormContext.d.mts.map +1 -0
- package/FormContext.d.ts +34 -34
- package/FormContext.d.ts.map +1 -1
- package/FormState.d.mts +34 -0
- package/FormState.d.mts.map +1 -0
- package/FormState.d.ts +24 -25
- package/FormState.d.ts.map +1 -1
- package/FormState.js.map +1 -1
- package/FormState.mjs.map +1 -1
- package/FormStateContext.d.mts +8 -0
- package/FormStateContext.d.mts.map +1 -0
- package/FormStateContext.d.ts +2 -2
- package/FormStateContext.d.ts.map +1 -1
- package/actions/addHandlers.d.mts +15 -0
- package/actions/addHandlers.d.mts.map +1 -0
- package/actions/addHandlers.d.ts +8 -8
- package/actions/addHandlers.d.ts.map +1 -1
- package/actions/arrayActions.d.mts +130 -0
- package/actions/arrayActions.d.mts.map +1 -0
- package/actions/arrayActions.d.ts +77 -77
- package/actions/arrayActions.d.ts.map +1 -1
- package/actions/initialize.d.mts +14 -0
- package/actions/initialize.d.mts.map +1 -0
- package/actions/initialize.d.ts +8 -8
- package/actions/initialize.d.ts.map +1 -1
- package/actions/removeHandlers.d.mts +10 -0
- package/actions/removeHandlers.d.mts.map +1 -0
- package/actions/removeHandlers.d.ts +5 -5
- package/actions/removeHandlers.d.ts.map +1 -1
- package/actions/setMeta.d.mts +9 -0
- package/actions/setMeta.d.mts.map +1 -0
- package/actions/setMeta.d.ts +5 -5
- package/actions/setMeta.d.ts.map +1 -1
- package/actions/setMounted.d.mts +6 -0
- package/actions/setMounted.d.mts.map +1 -0
- package/actions/setMounted.d.ts +2 -2
- package/actions/setMounted.d.ts.map +1 -1
- package/actions/setParsedValue.d.mts +12 -0
- package/actions/setParsedValue.d.mts.map +1 -0
- package/actions/setParsedValue.d.ts +6 -6
- package/actions/setParsedValue.d.ts.map +1 -1
- package/actions/setSubmitStatus.d.mts +14 -0
- package/actions/setSubmitStatus.d.mts.map +1 -0
- package/actions/setSubmitStatus.d.ts +9 -9
- package/actions/setSubmitStatus.d.ts.map +1 -1
- package/actions/setValue.d.mts +10 -0
- package/actions/setValue.d.mts.map +1 -0
- package/actions/setValue.d.ts +5 -5
- package/actions/setValue.d.ts.map +1 -1
- package/actions/submit.d.mts +5 -0
- package/actions/submit.d.mts.map +1 -0
- package/actions/submit.d.ts +1 -1
- package/actions/submit.d.ts.map +1 -1
- package/actions/submitSucceeded.d.mts +5 -0
- package/actions/submitSucceeded.d.mts.map +1 -0
- package/actions/submitSucceeded.d.ts +1 -1
- package/actions/submitSucceeded.d.ts.map +1 -1
- package/createFormMiddleware.d.mts +6 -0
- package/createFormMiddleware.d.mts.map +1 -0
- package/createFormMiddleware.d.ts +2 -2
- package/createFormMiddleware.d.ts.map +1 -1
- package/createFormProvider.d.mts +15 -0
- package/createFormProvider.d.mts.map +1 -0
- package/createFormProvider.d.ts +9 -7
- package/createFormProvider.d.ts.map +1 -1
- package/createFormReducer.d.mts +9 -0
- package/createFormReducer.d.mts.map +1 -0
- package/createFormReducer.d.ts +4 -4
- package/createFormReducer.d.ts.map +1 -1
- package/createSelectFieldErrorMap.d.mts +32 -0
- package/createSelectFieldErrorMap.d.mts.map +1 -0
- package/createSelectFieldErrorMap.d.ts +23 -23
- package/createSelectFieldErrorMap.d.ts.map +1 -1
- package/createSelectFormStatus.d.mts +133 -0
- package/createSelectFormStatus.d.mts.map +1 -0
- package/createSelectFormStatus.d.ts +101 -97
- package/createSelectFormStatus.d.ts.map +1 -1
- package/createSelectFormStatus.js +2 -2
- package/createSelectFormStatus.js.map +1 -1
- package/createSelectFormStatus.mjs +1 -1
- package/createSelectFormStatus.mjs.map +1 -1
- package/createSelectFormValues.d.mts +45 -0
- package/createSelectFormValues.d.mts.map +1 -0
- package/createSelectFormValues.d.ts +34 -34
- package/createSelectFormValues.d.ts.map +1 -1
- package/createZodForm.d.mts +42 -0
- package/createZodForm.d.mts.map +1 -0
- package/createZodForm.d.ts +36 -32
- package/createZodForm.d.ts.map +1 -1
- package/index.d.mts +15 -0
- package/index.d.mts.map +1 -0
- package/index.d.ts +14 -14
- package/index.d.ts.map +1 -1
- package/initFormState.d.mts +4 -0
- package/initFormState.d.mts.map +1 -0
- package/initFormState.d.ts +1 -1
- package/initFormState.d.ts.map +1 -1
- package/package.json +10 -7
- package/reducers/addHandlers.d.mts +24 -0
- package/reducers/addHandlers.d.mts.map +1 -0
- package/reducers/addHandlers.d.ts +20 -20
- package/reducers/addHandlers.d.ts.map +1 -1
- package/reducers/arrayInsert.d.mts +7 -0
- package/reducers/arrayInsert.d.mts.map +1 -0
- package/reducers/arrayInsert.d.ts +3 -3
- package/reducers/arrayInsert.d.ts.map +1 -1
- package/reducers/arrayInsertParsed.d.mts +7 -0
- package/reducers/arrayInsertParsed.d.mts.map +1 -0
- package/reducers/arrayInsertParsed.d.ts +3 -3
- package/reducers/arrayInsertParsed.d.ts.map +1 -1
- package/reducers/arrayMove.d.mts +8 -0
- package/reducers/arrayMove.d.mts.map +1 -0
- package/reducers/arrayMove.d.ts +3 -3
- package/reducers/arrayMove.d.ts.map +1 -1
- package/reducers/arrayPop.d.mts +7 -0
- package/reducers/arrayPop.d.mts.map +1 -0
- package/reducers/arrayPop.d.ts +3 -3
- package/reducers/arrayPop.d.ts.map +1 -1
- package/reducers/arrayPush.d.mts +7 -0
- package/reducers/arrayPush.d.mts.map +1 -0
- package/reducers/arrayPush.d.ts +3 -3
- package/reducers/arrayPush.d.ts.map +1 -1
- package/reducers/arrayPushParsed.d.mts +7 -0
- package/reducers/arrayPushParsed.d.mts.map +1 -0
- package/reducers/arrayPushParsed.d.ts +3 -3
- package/reducers/arrayPushParsed.d.ts.map +1 -1
- package/reducers/arrayRemove.d.mts +7 -0
- package/reducers/arrayRemove.d.mts.map +1 -0
- package/reducers/arrayRemove.d.ts +3 -3
- package/reducers/arrayRemove.d.ts.map +1 -1
- package/reducers/arrayRemoveAll.d.mts +7 -0
- package/reducers/arrayRemoveAll.d.mts.map +1 -0
- package/reducers/arrayRemoveAll.d.ts +3 -3
- package/reducers/arrayRemoveAll.d.ts.map +1 -1
- package/reducers/arrayShift.d.mts +7 -0
- package/reducers/arrayShift.d.mts.map +1 -0
- package/reducers/arrayShift.d.ts +3 -3
- package/reducers/arrayShift.d.ts.map +1 -1
- package/reducers/arraySplice.d.mts +7 -0
- package/reducers/arraySplice.d.mts.map +1 -0
- package/reducers/arraySplice.d.ts +3 -3
- package/reducers/arraySplice.d.ts.map +1 -1
- package/reducers/arraySpliceParsed.d.mts +7 -0
- package/reducers/arraySpliceParsed.d.mts.map +1 -0
- package/reducers/arraySpliceParsed.d.ts +3 -3
- package/reducers/arraySpliceParsed.d.ts.map +1 -1
- package/reducers/arraySwap.d.mts +8 -0
- package/reducers/arraySwap.d.mts.map +1 -0
- package/reducers/arraySwap.d.ts +3 -3
- package/reducers/arraySwap.d.ts.map +1 -1
- package/reducers/arrayUnshift.d.mts +7 -0
- package/reducers/arrayUnshift.d.mts.map +1 -0
- package/reducers/arrayUnshift.d.ts +3 -3
- package/reducers/arrayUnshift.d.ts.map +1 -1
- package/reducers/arrayUnshiftParsed.d.mts +7 -0
- package/reducers/arrayUnshiftParsed.d.mts.map +1 -0
- package/reducers/arrayUnshiftParsed.d.ts +3 -3
- package/reducers/arrayUnshiftParsed.d.ts.map +1 -1
- package/reducers/initialize.d.mts +49 -0
- package/reducers/initialize.d.mts.map +1 -0
- package/reducers/initialize.d.ts +44 -41
- package/reducers/initialize.d.ts.map +1 -1
- package/reducers/removeHandlers.d.mts +24 -0
- package/reducers/removeHandlers.d.mts.map +1 -0
- package/reducers/removeHandlers.d.ts +20 -20
- package/reducers/removeHandlers.d.ts.map +1 -1
- package/reducers/setMeta.d.mts +6 -0
- package/reducers/setMeta.d.mts.map +1 -0
- package/reducers/setMeta.d.ts +3 -3
- package/reducers/setMeta.d.ts.map +1 -1
- package/reducers/setParsedValue.d.mts +50 -0
- package/reducers/setParsedValue.d.mts.map +1 -0
- package/reducers/setParsedValue.d.ts +45 -42
- package/reducers/setParsedValue.d.ts.map +1 -1
- package/reducers/setSubmitStatus.d.mts +24 -0
- package/reducers/setSubmitStatus.d.mts.map +1 -0
- package/reducers/setSubmitStatus.d.ts +20 -20
- package/reducers/setSubmitStatus.d.ts.map +1 -1
- package/reducers/setValue.d.mts +29 -0
- package/reducers/setValue.d.mts.map +1 -0
- package/reducers/setValue.d.ts +25 -23
- package/reducers/setValue.d.ts.map +1 -1
- package/reducers/submitSucceeded.d.mts +23 -0
- package/reducers/submitSucceeded.d.mts.map +1 -0
- package/reducers/submitSucceeded.d.ts +19 -19
- package/reducers/submitSucceeded.d.ts.map +1 -1
- package/reducers/util/getInverseArrayElementSchema.d.mts +3 -0
- package/reducers/util/getInverseArrayElementSchema.d.mts.map +1 -0
- package/reducers/util/getInverseArrayElementSchema.d.ts.map +1 -1
- package/reducers/util/updateRawArray.d.mts +7 -0
- package/reducers/util/updateRawArray.d.mts.map +1 -0
- package/reducers/util/updateRawArray.d.ts +3 -3
- package/reducers/util/updateRawArray.d.ts.map +1 -1
- package/src/FormState.ts +1 -0
- package/src/createSelectFormStatus.ts +3 -1
- package/src/useArrayField.ts +13 -2
- package/src/useField.ts +81 -18
- package/src/useHtmlField.ts +31 -23
- package/useArrayField.d.mts +34 -0
- package/useArrayField.d.mts.map +1 -0
- package/useArrayField.d.ts +23 -23
- package/useArrayField.d.ts.map +1 -1
- package/useArrayField.js +22 -8
- package/useArrayField.js.map +1 -1
- package/useArrayField.mjs +12 -2
- package/useArrayField.mjs.map +1 -1
- package/useField.d.mts +38 -0
- package/useField.d.mts.map +1 -0
- package/useField.d.ts +31 -28
- package/useField.d.ts.map +1 -1
- package/useField.js +55 -22
- package/useField.js.map +1 -1
- package/useField.mjs +34 -16
- package/useField.mjs.map +1 -1
- package/useFormContext.d.mts +4 -0
- package/useFormContext.d.mts.map +1 -0
- package/useFormContext.d.ts +1 -1
- package/useFormContext.d.ts.map +1 -1
- package/useFormDispatch.d.mts +5 -0
- package/useFormDispatch.d.mts.map +1 -0
- package/useFormDispatch.d.ts +1 -1
- package/useFormDispatch.d.ts.map +1 -1
- package/useFormSelector.d.mts +6 -0
- package/useFormSelector.d.mts.map +1 -0
- package/useFormSelector.d.ts +1 -1
- package/useFormSelector.d.ts.map +1 -1
- package/useFormStatus.d.mts +13 -0
- package/useFormStatus.d.mts.map +1 -0
- package/useFormStatus.d.ts +10 -10
- package/useFormStatus.d.ts.map +1 -1
- package/useFormValues.d.mts +8 -0
- package/useFormValues.d.mts.map +1 -0
- package/useFormValues.d.ts +4 -4
- package/useFormValues.d.ts.map +1 -1
- package/useHtmlField.d.mts +41 -0
- package/useHtmlField.d.mts.map +1 -0
- package/useHtmlField.d.ts +25 -24
- package/useHtmlField.d.ts.map +1 -1
- package/useHtmlField.js +34 -23
- package/useHtmlField.js.map +1 -1
- package/useHtmlField.mjs +35 -20
- package/useHtmlField.mjs.map +1 -1
- package/useInitialize.d.mts +5 -0
- package/useInitialize.d.mts.map +1 -0
- package/useInitialize.d.ts +1 -1
- package/useInitialize.d.ts.map +1 -1
- package/useSubmit.d.mts +5 -0
- package/useSubmit.d.mts.map +1 -0
- package/useSubmit.d.ts +1 -1
- package/useSubmit.d.ts.map +1 -1
- package/util/DeepPartial.d.mts +2 -0
- package/util/DeepPartial.d.mts.map +1 -0
- package/util/DeepPartial.d.ts +1 -3
- package/util/DeepPartial.d.ts.map +1 -1
- package/util/PathInSchema.d.mts +5 -0
- package/util/PathInSchema.d.mts.map +1 -0
- package/util/PathInSchema.d.ts +1 -1
- package/util/PathInSchema.d.ts.map +1 -1
- package/util/PathInType.d.mts +7 -0
- package/util/PathInType.d.mts.map +1 -0
- package/util/PathInType.d.ts +3 -8
- package/util/PathInType.d.ts.map +1 -1
- package/util/SchemaAt.d.mts +5 -0
- package/util/SchemaAt.d.mts.map +1 -0
- package/util/SchemaAt.d.ts.map +1 -1
- package/util/acceptsBigint.d.mts +3 -0
- package/util/acceptsBigint.d.mts.map +1 -0
- package/util/acceptsBigint.d.ts.map +1 -1
- package/util/acceptsBigint.js +2 -2
- package/util/acceptsBigint.js.map +1 -1
- package/util/acceptsNumber.d.mts +3 -0
- package/util/acceptsNumber.d.mts.map +1 -0
- package/util/acceptsNumber.d.ts.map +1 -1
- package/util/acceptsNumber.js +2 -2
- package/util/acceptsNumber.js.map +1 -1
- package/util/bindActionsToField.d.mts +3 -0
- package/util/bindActionsToField.d.mts.map +1 -0
- package/util/bindActionsToField.d.ts +2 -6
- package/util/bindActionsToField.d.ts.map +1 -1
- package/util/get.d.mts +2 -0
- package/util/get.d.mts.map +1 -0
- package/util/get.d.ts.map +1 -1
- package/util/getArrayElementSchema.d.mts +3 -0
- package/util/getArrayElementSchema.d.mts.map +1 -0
- package/util/getArrayElementSchema.d.ts.map +1 -1
- package/util/getArrayElementSchema.js +2 -2
- package/util/getArrayElementSchema.js.map +1 -1
- package/util/isPromise.d.mts +2 -0
- package/util/isPromise.d.mts.map +1 -0
- package/util/isPromise.d.ts.map +1 -1
- package/util/maybeParse.d.mts +3 -0
- package/util/maybeParse.d.mts.map +1 -0
- package/util/maybeParse.d.ts.map +1 -1
- package/util/parsePathstring.d.mts +33 -0
- package/util/parsePathstring.d.mts.map +1 -0
- package/util/parsePathstring.d.ts +14 -38
- package/util/parsePathstring.d.ts.map +1 -1
- package/util/pathstring.d.mts +7 -0
- package/util/pathstring.d.mts.map +1 -0
- package/util/pathstring.d.ts.map +1 -1
- package/util/set.d.mts +2 -0
- package/util/set.d.mts.map +1 -0
- package/util/set.d.ts.map +1 -1
- package/util/setAdd.d.mts +2 -0
- package/util/setAdd.d.mts.map +1 -0
- package/util/setAdd.d.ts.map +1 -1
- package/util/setDelete.d.mts +2 -0
- package/util/setDelete.d.mts.map +1 -0
- package/util/setDelete.d.ts.map +1 -1
package/src/useHtmlField.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { PathInSchema, PathstringInSchema } from './util/PathInSchema'
|
|
|
10
10
|
import { parsePathstring } from './util/parsePathstring'
|
|
11
11
|
import { SchemaAt } from './util/SchemaAt'
|
|
12
12
|
import { DeepPartial } from './util/DeepPartial'
|
|
13
|
+
import isEqual from 'fast-deep-equal'
|
|
13
14
|
|
|
14
15
|
export type HtmlFieldInputProps = {
|
|
15
16
|
name: string
|
|
@@ -46,6 +47,7 @@ export type UseHtmlFieldOptions<
|
|
|
46
47
|
field: Field
|
|
47
48
|
type: z.input<Schema> extends boolean | null | undefined ? 'checkbox'
|
|
48
49
|
: Exclude<HTMLInputTypeAttribute, 'checkbox'>
|
|
50
|
+
normalizeOnMount?: boolean
|
|
49
51
|
normalizeOnBlur?: boolean
|
|
50
52
|
}
|
|
51
53
|
|
|
@@ -61,11 +63,16 @@ export interface TypedUseHtmlField<T extends z.ZodTypeAny> {
|
|
|
61
63
|
): UseHtmlFieldProps<FieldPath<SchemaAt<T, parsePathstring<Path>>>>
|
|
62
64
|
}
|
|
63
65
|
|
|
66
|
+
const customMetaSchema = z.object({
|
|
67
|
+
value: z.unknown(),
|
|
68
|
+
stringValue: z.string(),
|
|
69
|
+
})
|
|
70
|
+
|
|
64
71
|
function useHtmlFieldBase<Field extends FieldPath>(
|
|
65
72
|
options: UseHtmlFieldOptions<Field, Field['schema']>
|
|
66
73
|
): UseHtmlFieldProps<Field> {
|
|
67
|
-
const { field, type, normalizeOnBlur = true } = options
|
|
68
|
-
const props = useField(field)
|
|
74
|
+
const { field, type, normalizeOnMount, normalizeOnBlur = true } = options
|
|
75
|
+
const props = useField(field, { normalizeOnMount })
|
|
69
76
|
const {
|
|
70
77
|
parsedValue,
|
|
71
78
|
value,
|
|
@@ -77,16 +84,16 @@ function useHtmlFieldBase<Field extends FieldPath>(
|
|
|
77
84
|
...meta
|
|
78
85
|
} = props
|
|
79
86
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// tempValue is used for storing blank text when we've coerced the
|
|
83
|
-
// value to null or undefined, or storing numeric text when we've
|
|
84
|
-
// coerced the value to a number or bigint.
|
|
87
|
+
// we've coerced the value to null or undefined, or storing numeric
|
|
88
|
+
// text when we've coerced the value to a number or bigint.
|
|
85
89
|
// This way we can set a value that will parse better in the form
|
|
86
90
|
// state without interfering with the text the user is typing.
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
91
|
+
const customMeta = React.useMemo(() => {
|
|
92
|
+
const parsedCustomMeta = customMetaSchema.safeParse(meta.customMeta)
|
|
93
|
+
return parsedCustomMeta.success ? parsedCustomMeta.data : undefined
|
|
94
|
+
}, [meta.customMeta])
|
|
95
|
+
|
|
96
|
+
const { schema } = field
|
|
90
97
|
|
|
91
98
|
const tryNumber = React.useMemo(() => acceptsNumber(schema), [schema])
|
|
92
99
|
const tryBigint = React.useMemo(() => acceptsBigint(schema), [schema])
|
|
@@ -100,7 +107,7 @@ function useHtmlFieldBase<Field extends FieldPath>(
|
|
|
100
107
|
tryBigint,
|
|
101
108
|
})
|
|
102
109
|
if (typeof value === 'string' && typeof normalized !== 'string') {
|
|
103
|
-
|
|
110
|
+
setMeta({ customMeta: { stringValue: value, value: normalized } })
|
|
104
111
|
}
|
|
105
112
|
setValue(normalized)
|
|
106
113
|
},
|
|
@@ -113,22 +120,20 @@ function useHtmlFieldBase<Field extends FieldPath>(
|
|
|
113
120
|
|
|
114
121
|
const onBlur = React.useCallback(
|
|
115
122
|
(e: React.FocusEvent) => {
|
|
116
|
-
let value = normalizeValue(getValue(e), {
|
|
117
|
-
schema,
|
|
118
|
-
tryNumber,
|
|
119
|
-
tryBigint,
|
|
120
|
-
})
|
|
121
123
|
if (normalizeOnBlur) {
|
|
124
|
+
const value = normalizeValue(getValue(e), {
|
|
125
|
+
schema,
|
|
126
|
+
tryNumber,
|
|
127
|
+
tryBigint,
|
|
128
|
+
})
|
|
122
129
|
const parsed = field.schema.safeParse(value)
|
|
123
130
|
const formatted =
|
|
124
131
|
parsed.success ?
|
|
125
132
|
invert(field.schema).safeParse(parsed.data)
|
|
126
133
|
: undefined
|
|
127
|
-
|
|
128
|
-
setValue(value)
|
|
134
|
+
setValue(formatted?.success ? formatted.data : value)
|
|
129
135
|
}
|
|
130
|
-
|
|
131
|
-
setMeta({ visited: true, touched: true })
|
|
136
|
+
setMeta({ visited: true, touched: true, customMeta: undefined })
|
|
132
137
|
},
|
|
133
138
|
[getValue, setValue, schema]
|
|
134
139
|
)
|
|
@@ -140,8 +145,11 @@ function useHtmlFieldBase<Field extends FieldPath>(
|
|
|
140
145
|
type,
|
|
141
146
|
value:
|
|
142
147
|
typeof value === 'boolean' ? String(value)
|
|
143
|
-
: typeof value === 'string' ? value ||
|
|
144
|
-
:
|
|
148
|
+
: typeof value === 'string' ? value || customMeta?.stringValue || ''
|
|
149
|
+
: customMeta && isEqual(customMeta.value, value) ?
|
|
150
|
+
customMeta.stringValue
|
|
151
|
+
: value == null ? ''
|
|
152
|
+
: String(value) || '',
|
|
145
153
|
...(type === 'checkbox' && { checked: Boolean(value) }),
|
|
146
154
|
onChange,
|
|
147
155
|
onFocus,
|
|
@@ -158,7 +166,7 @@ function useHtmlFieldBase<Field extends FieldPath>(
|
|
|
158
166
|
setMeta,
|
|
159
167
|
},
|
|
160
168
|
}),
|
|
161
|
-
[props,
|
|
169
|
+
[props, customMeta, onChange]
|
|
162
170
|
) as any
|
|
163
171
|
}
|
|
164
172
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { FieldPath, FieldPathForValue } from "./FieldPath.mjs";
|
|
3
|
+
import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.mjs";
|
|
4
|
+
import { parsePathstring } from "./util/parsePathstring.mjs";
|
|
5
|
+
import { SchemaAt } from "./util/SchemaAt.mjs";
|
|
6
|
+
import { bindActionsToField } from "./util/bindActionsToField.mjs";
|
|
7
|
+
import { arrayActions } from "./actions/arrayActions.mjs";
|
|
8
|
+
import { setParsedValue } from "./actions/setParsedValue.mjs";
|
|
9
|
+
import { setValue } from "./actions/setValue.mjs";
|
|
10
|
+
import { setMeta } from "./actions/setMeta.mjs";
|
|
11
|
+
import { FieldMeta } from "./FormState.mjs";
|
|
12
|
+
export type UseArrayFieldProps<Field extends FieldPath> = NonNullable<z.input<Field['schema']>> extends any[] ? FieldMeta & ReturnType<typeof bindActionsToField<Field, arrayActions<Field> & {
|
|
13
|
+
setParsedValue: typeof setParsedValue<Field>;
|
|
14
|
+
setValue: typeof setValue<Field>;
|
|
15
|
+
setMeta: typeof setMeta<Field>;
|
|
16
|
+
}>> & {
|
|
17
|
+
elements: FieldPath<SchemaAt<Field['schema'], [number]>>[];
|
|
18
|
+
error?: string;
|
|
19
|
+
dirty: boolean;
|
|
20
|
+
pristine: boolean;
|
|
21
|
+
valid: boolean;
|
|
22
|
+
invalid: boolean;
|
|
23
|
+
} : {
|
|
24
|
+
ERROR: 'not an array field';
|
|
25
|
+
};
|
|
26
|
+
export interface TypedUseArrayField<T extends z.ZodTypeAny> {
|
|
27
|
+
<Field extends FieldPathForValue<any[] | null | undefined>>(field: Field): UseArrayFieldProps<Field>;
|
|
28
|
+
<Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
29
|
+
<Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
30
|
+
}
|
|
31
|
+
export declare function useArrayField<Field extends FieldPath>(field: Field): UseArrayFieldProps<Field>;
|
|
32
|
+
export declare function useArrayField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArrayField<T> to pass a path array'>, Path extends PathInSchema<T> = any>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
33
|
+
export declare function useArrayField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArrayField<T> to pass a pathstring'>, Pathstring extends PathstringInSchema<T> = any>(field: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
34
|
+
//# sourceMappingURL=useArrayField.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useArrayField.d.mts","names":["z","FieldPath","FieldPathForValue","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","bindActionsToField","arrayActions","setParsedValue","setValue","setMeta","FieldMeta","UseArrayFieldProps","NonNullable","input","Field","ReturnType","elements","error","dirty","pristine","valid","invalid","ERROR","TypedUseArrayField","ZodTypeAny","field","T","path","Path","Pathstring","useArrayField","ZodBranded","ZodNever"],"sources":["src/useArrayField.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAAmBC,SAAS,EAAEC,iBAAiB;AAG/C,SAASC,YAAY,EAAEC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,QAAQ;AACjB,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AASrB,SAASC,cAAc;AACvB,SAASC,QAAQ;AACjB,SAASC,OAAO;AAChB,SAASC,SAAS;AAIlB,OAAM,KAAMC,kBAAkB,CAAC,cAAcZ,SAAS,IACpDa,WAAW,CAACd,CAAC,CAACe,KAAK,CAACC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,GACjDJ,SAAS,GACPK,UAAU,CACR,OAAOV,kBAAkB,CACvBS,KAAK,EACLR,YAAY,CAACQ,KAAK,CAAC,GAAG;EACpBP,cAAc,EAAE,OAAOA,cAAc,CAACO,KAAK,CAAC;EAC5CN,QAAQ,EAAE,OAAOA,QAAQ,CAACM,KAAK,CAAC;EAChCL,OAAO,EAAE,OAAOA,OAAO,CAACK,KAAK,CAAC;CAC/B,CACF,CACF,GAAG;EACFE,QAAQ,EAAEjB,SAAS,CAACK,QAAQ,CAACU,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;EAC1DG,KAAK,CAAC,EAAE,MAAM;EACdC,KAAK,EAAE,OAAO;EACdC,QAAQ,EAAE,OAAO;EACjBC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE,OAAO;CACjB,GACH;EAAEC,KAAK,EAAE,oBAAoB;CAAE;AAEnC,OAAM,UAAWC,kBAAkB,CAAC,UAAUzB,CAAC,CAAC0B,UAAU;EACxD,CAAC,cAAcxB,iBAAiB,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EACxDyB,KAAK,EAAEX,KAAK,GACXH,kBAAkB,CAACG,KAAK,CAAC;EAC5B,CAAC,aAAab,YAAY,CAACyB,CAAC,CAAC,EAC3BC,IAAI,EAAEC,IAAI,GACTjB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;EACnD,CAAC,mBAAmB1B,kBAAkB,CAACwB,CAAC,CAAC,EACvCC,IAAI,EAAEE,UAAU,GACflB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEvB,eAAe,CAAC0B,UAAU,CAAC,CAAC,CAAC,CAAC;;AAwG5E,wBAAgBC,aAAa,CAAC,cAAc/B,SAAS,CAAA+B,CACnDL,KAAK,EAAEX,KAAK,GACXH,kBAAkB,CAACG,KAAK,CAAC;AAC5B,wBAAgBgB,aAAa,CAC3B,UAAUhC,CAAC,CAAC0B,UAAU,GAAG1B,CAAC,CAACiC,UAAU,CACnCjC,CAAC,CAACkC,QAAQ,EACV,oDAAoD,CACrD,EACD,aAAa/B,YAAY,CAACyB,CAAC,CAAC,GAAG,GAAG,CAAAI,CAClCL,KAAK,EAAEG,IAAI,GAAGjB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;AAChE,wBAAgBE,aAAa,CAC3B,UAAUhC,CAAC,CAAC0B,UAAU,GAAG1B,CAAC,CAACiC,UAAU,CACnCjC,CAAC,CAACkC,QAAQ,EACV,oDAAoD,CACrD,EACD,mBAAmB9B,kBAAkB,CAACwB,CAAC,CAAC,GAAG,GAAG,CAAAI,CAE9CL,KAAK,EAAEI,UAAU,GAChBlB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEvB,eAAe,CAAC0B,UAAU,CAAC,CAAC,CAAC,CAAC","ignoreList":[]}
|
package/useArrayField.d.ts
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
-
import { FieldPath, FieldPathForValue } from
|
|
3
|
-
import { PathInSchema, PathstringInSchema } from
|
|
4
|
-
import { parsePathstring } from
|
|
5
|
-
import { SchemaAt } from
|
|
6
|
-
import { bindActionsToField } from
|
|
7
|
-
import { arrayActions } from
|
|
8
|
-
import { setParsedValue } from
|
|
9
|
-
import { setValue } from
|
|
10
|
-
import { setMeta } from
|
|
11
|
-
import { FieldMeta } from
|
|
2
|
+
import { FieldPath, FieldPathForValue } from "./FieldPath.js";
|
|
3
|
+
import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.js";
|
|
4
|
+
import { parsePathstring } from "./util/parsePathstring.js";
|
|
5
|
+
import { SchemaAt } from "./util/SchemaAt.js";
|
|
6
|
+
import { bindActionsToField } from "./util/bindActionsToField.js";
|
|
7
|
+
import { arrayActions } from "./actions/arrayActions.js";
|
|
8
|
+
import { setParsedValue } from "./actions/setParsedValue.js";
|
|
9
|
+
import { setValue } from "./actions/setValue.js";
|
|
10
|
+
import { setMeta } from "./actions/setMeta.js";
|
|
11
|
+
import { FieldMeta } from "./FormState.js";
|
|
12
12
|
export type UseArrayFieldProps<Field extends FieldPath> = NonNullable<z.input<Field['schema']>> extends any[] ? FieldMeta & ReturnType<typeof bindActionsToField<Field, arrayActions<Field> & {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
setParsedValue: typeof setParsedValue<Field>;
|
|
14
|
+
setValue: typeof setValue<Field>;
|
|
15
|
+
setMeta: typeof setMeta<Field>;
|
|
16
16
|
}>> & {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
elements: FieldPath<SchemaAt<Field['schema'], [number]>>[];
|
|
18
|
+
error?: string;
|
|
19
|
+
dirty: boolean;
|
|
20
|
+
pristine: boolean;
|
|
21
|
+
valid: boolean;
|
|
22
|
+
invalid: boolean;
|
|
23
23
|
} : {
|
|
24
|
-
|
|
24
|
+
ERROR: 'not an array field';
|
|
25
25
|
};
|
|
26
26
|
export interface TypedUseArrayField<T extends z.ZodTypeAny> {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
<Field extends FieldPathForValue<any[] | null | undefined>>(field: Field): UseArrayFieldProps<Field>;
|
|
28
|
+
<Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
29
|
+
<Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
30
30
|
}
|
|
31
31
|
export declare function useArrayField<Field extends FieldPath>(field: Field): UseArrayFieldProps<Field>;
|
|
32
32
|
export declare function useArrayField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArrayField<T> to pass a path array'>, Path extends PathInSchema<T> = any>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
package/useArrayField.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useArrayField.d.ts","
|
|
1
|
+
{"version":3,"file":"useArrayField.d.ts","names":["z","FieldPath","FieldPathForValue","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","bindActionsToField","arrayActions","setParsedValue","setValue","setMeta","FieldMeta","UseArrayFieldProps","NonNullable","input","Field","ReturnType","elements","error","dirty","pristine","valid","invalid","ERROR","TypedUseArrayField","ZodTypeAny","field","T","path","Path","Pathstring","useArrayField","ZodBranded","ZodNever"],"sources":["src/useArrayField.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,CAAC,MAAM,KAAK;AACnB,SAAmBC,SAAS,EAAEC,iBAAiB;AAG/C,SAASC,YAAY,EAAEC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,QAAQ;AACjB,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AASrB,SAASC,cAAc;AACvB,SAASC,QAAQ;AACjB,SAASC,OAAO;AAChB,SAASC,SAAS;AAIlB,OAAM,KAAMC,kBAAkB,CAAC,cAAcZ,SAAS,IACpDa,WAAW,CAACd,CAAC,CAACe,KAAK,CAACC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,GACjDJ,SAAS,GACPK,UAAU,CACR,OAAOV,kBAAkB,CACvBS,KAAK,EACLR,YAAY,CAACQ,KAAK,CAAC,GAAG;EACpBP,cAAc,EAAE,OAAOA,cAAc,CAACO,KAAK,CAAC;EAC5CN,QAAQ,EAAE,OAAOA,QAAQ,CAACM,KAAK,CAAC;EAChCL,OAAO,EAAE,OAAOA,OAAO,CAACK,KAAK,CAAC;CAC/B,CACF,CACF,GAAG;EACFE,QAAQ,EAAEjB,SAAS,CAACK,QAAQ,CAACU,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;EAC1DG,KAAK,CAAC,EAAE,MAAM;EACdC,KAAK,EAAE,OAAO;EACdC,QAAQ,EAAE,OAAO;EACjBC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE,OAAO;CACjB,GACH;EAAEC,KAAK,EAAE,oBAAoB;CAAE;AAEnC,OAAM,UAAWC,kBAAkB,CAAC,UAAUzB,CAAC,CAAC0B,UAAU;EACxD,CAAC,cAAcxB,iBAAiB,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EACxDyB,KAAK,EAAEX,KAAK,GACXH,kBAAkB,CAACG,KAAK,CAAC;EAC5B,CAAC,aAAab,YAAY,CAACyB,CAAC,CAAC,EAC3BC,IAAI,EAAEC,IAAI,GACTjB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;EACnD,CAAC,mBAAmB1B,kBAAkB,CAACwB,CAAC,CAAC,EACvCC,IAAI,EAAEE,UAAU,GACflB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEvB,eAAe,CAAC0B,UAAU,CAAC,CAAC,CAAC,CAAC;;AAwG5E,wBAAgBC,aAAa,CAAC,cAAc/B,SAAS,CAAA+B,CACnDL,KAAK,EAAEX,KAAK,GACXH,kBAAkB,CAACG,KAAK,CAAC;AAC5B,wBAAgBgB,aAAa,CAC3B,UAAUhC,CAAC,CAAC0B,UAAU,GAAG1B,CAAC,CAACiC,UAAU,CACnCjC,CAAC,CAACkC,QAAQ,EACV,oDAAoD,CACrD,EACD,aAAa/B,YAAY,CAACyB,CAAC,CAAC,GAAG,GAAG,CAAAI,CAClCL,KAAK,EAAEG,IAAI,GAAGjB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEE,IAAI,CAAC,CAAC,CAAC;AAChE,wBAAgBE,aAAa,CAC3B,UAAUhC,CAAC,CAAC0B,UAAU,GAAG1B,CAAC,CAACiC,UAAU,CACnCjC,CAAC,CAACkC,QAAQ,EACV,oDAAoD,CACrD,EACD,mBAAmB9B,kBAAkB,CAACwB,CAAC,CAAC,GAAG,GAAG,CAAAI,CAE9CL,KAAK,EAAEI,UAAU,GAChBlB,kBAAkB,CAACZ,SAAS,CAACK,QAAQ,CAACsB,CAAC,EAAEvB,eAAe,CAAC0B,UAAU,CAAC,CAAC,CAAC,CAAC","ignoreList":[]}
|
package/useArrayField.js
CHANGED
|
@@ -16,6 +16,7 @@ var _get = require("./util/get.js");
|
|
|
16
16
|
var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
|
|
17
17
|
var _useFormSelector2 = require("./useFormSelector.js");
|
|
18
18
|
var _reactRedux = require("react-redux");
|
|
19
|
+
var _maybeParse = require("./util/maybeParse.js");
|
|
19
20
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
21
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
22
|
function useArrayFieldBase(field) {
|
|
@@ -29,18 +30,30 @@ function useArrayFieldBase(field) {
|
|
|
29
30
|
var useFormSelector = _useFormSelector2.useFormSelector;
|
|
30
31
|
var valuesSelector = _react["default"].useMemo(function () {
|
|
31
32
|
return (0, _reselect.createSelector)([selectFormValues], (0, _reselect.createSelector)([(0, _reselect.createStructuredSelector)({
|
|
32
|
-
|
|
33
|
-
var
|
|
33
|
+
parsedValue: function parsedValue(_ref) {
|
|
34
|
+
var parsedValues = _ref.parsedValues;
|
|
35
|
+
return (0, _get.get)(parsedValues, field.path);
|
|
36
|
+
},
|
|
37
|
+
value: function value(_ref2) {
|
|
38
|
+
var values = _ref2.values;
|
|
34
39
|
return (0, _get.get)(values, field.path);
|
|
35
40
|
},
|
|
36
|
-
|
|
37
|
-
var
|
|
41
|
+
initialParsedValue: function initialParsedValue(_ref3) {
|
|
42
|
+
var initialParsedValues = _ref3.initialParsedValues;
|
|
43
|
+
return (0, _get.get)(initialParsedValues, field.path);
|
|
44
|
+
},
|
|
45
|
+
initialValue: function initialValue(_ref4) {
|
|
46
|
+
var initialValues = _ref4.initialValues;
|
|
38
47
|
return (0, _get.get)(initialValues, field.path);
|
|
39
48
|
}
|
|
40
|
-
})], function (
|
|
41
|
-
var value =
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
})], function (_ref5) {
|
|
50
|
+
var value = _ref5.value,
|
|
51
|
+
_ref5$parsedValue = _ref5.parsedValue,
|
|
52
|
+
parsedValue = _ref5$parsedValue === void 0 ? (0, _maybeParse.maybeParse)(field.schema, value) : _ref5$parsedValue,
|
|
53
|
+
initialValue = _ref5.initialValue,
|
|
54
|
+
_ref5$initialParsedVa = _ref5.initialParsedValue,
|
|
55
|
+
initialParsedValue = _ref5$initialParsedVa === void 0 ? (0, _maybeParse.maybeParse)(field.schema, initialValue) : _ref5$initialParsedVa;
|
|
56
|
+
var dirty = !(0, _fastDeepEqual["default"])(parsedValue, initialParsedValue);
|
|
44
57
|
var pristine = !dirty;
|
|
45
58
|
return {
|
|
46
59
|
dirty: dirty,
|
|
@@ -80,6 +93,7 @@ function useArrayFieldBase(field) {
|
|
|
80
93
|
return _objectSpread(_objectSpread({}, boundActions), {}, {
|
|
81
94
|
visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
|
|
82
95
|
touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
|
|
96
|
+
customMeta: meta === null || meta === void 0 ? void 0 : meta.customMeta,
|
|
83
97
|
error: error,
|
|
84
98
|
elements: elements,
|
|
85
99
|
dirty: dirty,
|
package/useArrayField.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useArrayField.js","names":["_FieldPath","require","_react","_interopRequireDefault","_useFormContext3","_bindActionsToField","_reselect","_get","_fastDeepEqual","_useFormSelector2","_reactRedux","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useArrayFieldBase","field","_useFormContext","useFormContext","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","value","_ref","values","get","path","initialValue","_ref2","initialValues","_ref3","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\n\nexport type UseArrayFieldProps<Field extends FieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[] ?\n FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({ value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useArrayField.js","names":["_FieldPath","require","_react","_interopRequireDefault","_useFormContext3","_bindActionsToField","_reselect","_get","_fastDeepEqual","_useFormSelector2","_reactRedux","_maybeParse","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useArrayFieldBase","field","_useFormContext","useFormContext","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","parsedValue","_ref","parsedValues","get","path","value","_ref2","values","initialParsedValue","_ref3","initialParsedValues","initialValue","_ref4","initialValues","_ref5","_ref5$parsedValue","maybeParse","schema","_ref5$initialParsedVa","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","customMeta","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\nimport { maybeParse } from './util/maybeParse'\n\nexport type UseArrayFieldProps<Field extends FieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[] ?\n FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<T> | undefined,\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as z.output<T> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(parsedValue, initialParsedValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n customMeta: meta?.customMeta,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
package/useArrayField.mjs
CHANGED
|
@@ -7,6 +7,7 @@ import { get } from "./util/get.mjs";
|
|
|
7
7
|
import isEqual from 'fast-deep-equal';
|
|
8
8
|
import { useFormSelector as untypedUseFormSelector } from "./useFormSelector.mjs";
|
|
9
9
|
import { shallowEqual } from 'react-redux';
|
|
10
|
+
import { maybeParse } from "./util/maybeParse.mjs";
|
|
10
11
|
function useArrayFieldBase(field) {
|
|
11
12
|
const {
|
|
12
13
|
arrayActions,
|
|
@@ -18,17 +19,25 @@ function useArrayFieldBase(field) {
|
|
|
18
19
|
} = useFormContext();
|
|
19
20
|
const useFormSelector = untypedUseFormSelector;
|
|
20
21
|
const valuesSelector = React.useMemo(() => createSelector([selectFormValues], createSelector([createStructuredSelector({
|
|
22
|
+
parsedValue: ({
|
|
23
|
+
parsedValues
|
|
24
|
+
}) => get(parsedValues, field.path),
|
|
21
25
|
value: ({
|
|
22
26
|
values
|
|
23
27
|
}) => get(values, field.path),
|
|
28
|
+
initialParsedValue: ({
|
|
29
|
+
initialParsedValues
|
|
30
|
+
}) => get(initialParsedValues, field.path),
|
|
24
31
|
initialValue: ({
|
|
25
32
|
initialValues
|
|
26
33
|
}) => get(initialValues, field.path)
|
|
27
34
|
})], ({
|
|
28
35
|
value,
|
|
29
|
-
|
|
36
|
+
parsedValue = maybeParse(field.schema, value),
|
|
37
|
+
initialValue,
|
|
38
|
+
initialParsedValue = maybeParse(field.schema, initialValue)
|
|
30
39
|
}) => {
|
|
31
|
-
const dirty = !isEqual(
|
|
40
|
+
const dirty = !isEqual(parsedValue, initialParsedValue);
|
|
32
41
|
const pristine = !dirty;
|
|
33
42
|
return {
|
|
34
43
|
dirty,
|
|
@@ -57,6 +66,7 @@ function useArrayFieldBase(field) {
|
|
|
57
66
|
...boundActions,
|
|
58
67
|
visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
|
|
59
68
|
touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
|
|
69
|
+
customMeta: meta === null || meta === void 0 ? void 0 : meta.customMeta,
|
|
60
70
|
error,
|
|
61
71
|
elements,
|
|
62
72
|
dirty,
|
package/useArrayField.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","useArrayFieldBase","field","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","value","values","
|
|
1
|
+
{"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","maybeParse","useArrayFieldBase","field","arrayActions","setParsedValue","setValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","parsedValue","parsedValues","path","value","values","initialParsedValue","initialParsedValues","initialValue","initialValues","schema","dirty","pristine","length","Array","isArray","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","elements","keys","map","index","subfield","visited","touched","customMeta","valid","invalid","Boolean","useArrayField","root"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions, ArrayFieldPath } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setParsedValue } from './actions/setParsedValue'\nimport { setValue } from './actions/setValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\nimport { DeepPartial } from './util/DeepPartial'\nimport { maybeParse } from './util/maybeParse'\n\nexport type UseArrayFieldProps<Field extends FieldPath> =\n NonNullable<z.input<Field['schema']>> extends any[] ?\n FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n Field,\n arrayActions<Field> & {\n setParsedValue: typeof setParsedValue<Field>\n setValue: typeof setValue<Field>\n setMeta: typeof setMeta<Field>\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(\n path: Path\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends ArrayFieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setParsedValue,\n setValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n parsedValue: ({ parsedValues }) =>\n get(parsedValues, field.path) as z.output<T> | undefined,\n value: ({ values }) =>\n get(values, field.path) as DeepPartial<z.input<T>> | undefined,\n initialParsedValue: ({ initialParsedValues }) =>\n get(initialParsedValues, field.path) as z.output<T> | undefined,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as\n | DeepPartial<z.input<T>>\n | undefined,\n }),\n ],\n ({\n value,\n parsedValue = maybeParse(field.schema, value),\n initialValue,\n initialParsedValue = maybeParse(field.schema, initialValue),\n }) => {\n const dirty = !isEqual(parsedValue, initialParsedValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(value) ? value.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setParsedValue, setValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () =>\n [...new Array(length).keys()].map((index) =>\n field.subfield(\n // @ts-expect-error doesn't work on this type parameter\n index\n )\n ),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n customMeta: meta?.customMeta,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any,\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any,\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
package/useField.d.mts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { FieldPath } from "./FieldPath.mjs";
|
|
3
|
+
import { FieldMeta } from "./FormState.mjs";
|
|
4
|
+
import { setParsedValue } from "./actions/setParsedValue.mjs";
|
|
5
|
+
import { setValue } from "./actions/setValue.mjs";
|
|
6
|
+
import { setMeta } from "./actions/setMeta.mjs";
|
|
7
|
+
import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.mjs";
|
|
8
|
+
import { parsePathstring } from "./util/parsePathstring.mjs";
|
|
9
|
+
import { SchemaAt } from "./util/SchemaAt.mjs";
|
|
10
|
+
import { bindActionsToField } from "./util/bindActionsToField.mjs";
|
|
11
|
+
import { DeepPartial } from "./util/DeepPartial.mjs";
|
|
12
|
+
export type UseFieldProps<Field extends FieldPath> = FieldMeta & ReturnType<typeof bindActionsToField<Field, {
|
|
13
|
+
setParsedValue: typeof setParsedValue<Field>;
|
|
14
|
+
setValue: typeof setValue<Field>;
|
|
15
|
+
setMeta: typeof setMeta<Field>;
|
|
16
|
+
}>> & {
|
|
17
|
+
parsedValue?: z.output<Field['schema']>;
|
|
18
|
+
value?: DeepPartial<z.input<Field['schema']>>;
|
|
19
|
+
initialParsedValue?: z.output<Field['schema']>;
|
|
20
|
+
initialValue?: DeepPartial<z.input<Field['schema']>>;
|
|
21
|
+
error?: string;
|
|
22
|
+
dirty: boolean;
|
|
23
|
+
pristine: boolean;
|
|
24
|
+
valid: boolean;
|
|
25
|
+
invalid: boolean;
|
|
26
|
+
};
|
|
27
|
+
export interface TypedUseField<T extends z.ZodTypeAny> {
|
|
28
|
+
<Field extends FieldPath>(field: Field): UseFieldProps<Field>;
|
|
29
|
+
<Path extends PathInSchema<T>>(path: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
30
|
+
<Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
31
|
+
}
|
|
32
|
+
export type UseFieldOptions = {
|
|
33
|
+
normalizeOnMount?: boolean;
|
|
34
|
+
};
|
|
35
|
+
export declare function useField<Field extends FieldPath>(field: Field, options?: UseFieldOptions): UseFieldProps<Field>;
|
|
36
|
+
export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a path array'>, Path extends PathInSchema<T> = any>(field: Path, options?: UseFieldOptions): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
37
|
+
export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a pathstring'>, Pathstring extends PathstringInSchema<T> = any>(field: Pathstring, options?: UseFieldOptions): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
38
|
+
//# sourceMappingURL=useField.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useField.d.mts","names":["z","FieldPath","FieldMeta","setParsedValue","setValue","setMeta","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","bindActionsToField","DeepPartial","UseFieldProps","ReturnType","Field","parsedValue","output","value","input","initialParsedValue","initialValue","error","dirty","pristine","valid","invalid","TypedUseField","ZodTypeAny","field","T","path","Path","Pathstring","UseFieldOptions","normalizeOnMount","useField","options","ZodBranded","ZodNever"],"sources":["src/useField.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/useField.d.ts
CHANGED
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
-
import { FieldPath } from
|
|
3
|
-
import { FieldMeta } from
|
|
4
|
-
import { setParsedValue } from
|
|
5
|
-
import { setValue } from
|
|
6
|
-
import { setMeta } from
|
|
7
|
-
import { PathInSchema, PathstringInSchema } from
|
|
8
|
-
import { parsePathstring } from
|
|
9
|
-
import { SchemaAt } from
|
|
10
|
-
import { bindActionsToField } from
|
|
11
|
-
import { DeepPartial } from
|
|
2
|
+
import { FieldPath } from "./FieldPath.js";
|
|
3
|
+
import { FieldMeta } from "./FormState.js";
|
|
4
|
+
import { setParsedValue } from "./actions/setParsedValue.js";
|
|
5
|
+
import { setValue } from "./actions/setValue.js";
|
|
6
|
+
import { setMeta } from "./actions/setMeta.js";
|
|
7
|
+
import { PathInSchema, PathstringInSchema } from "./util/PathInSchema.js";
|
|
8
|
+
import { parsePathstring } from "./util/parsePathstring.js";
|
|
9
|
+
import { SchemaAt } from "./util/SchemaAt.js";
|
|
10
|
+
import { bindActionsToField } from "./util/bindActionsToField.js";
|
|
11
|
+
import { DeepPartial } from "./util/DeepPartial.js";
|
|
12
12
|
export type UseFieldProps<Field extends FieldPath> = FieldMeta & ReturnType<typeof bindActionsToField<Field, {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
setParsedValue: typeof setParsedValue<Field>;
|
|
14
|
+
setValue: typeof setValue<Field>;
|
|
15
|
+
setMeta: typeof setMeta<Field>;
|
|
16
16
|
}>> & {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
parsedValue?: z.output<Field['schema']>;
|
|
18
|
+
value?: DeepPartial<z.input<Field['schema']>>;
|
|
19
|
+
initialParsedValue?: z.output<Field['schema']>;
|
|
20
|
+
initialValue?: DeepPartial<z.input<Field['schema']>>;
|
|
21
|
+
error?: string;
|
|
22
|
+
dirty: boolean;
|
|
23
|
+
pristine: boolean;
|
|
24
|
+
valid: boolean;
|
|
25
|
+
invalid: boolean;
|
|
26
26
|
};
|
|
27
27
|
export interface TypedUseField<T extends z.ZodTypeAny> {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
<Field extends FieldPath>(field: Field): UseFieldProps<Field>;
|
|
29
|
+
<Path extends PathInSchema<T>>(path: Path): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
30
|
+
<Pathstring extends PathstringInSchema<T>>(path: Pathstring): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
31
31
|
}
|
|
32
|
-
export
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
export type UseFieldOptions = {
|
|
33
|
+
normalizeOnMount?: boolean;
|
|
34
|
+
};
|
|
35
|
+
export declare function useField<Field extends FieldPath>(field: Field, options?: UseFieldOptions): UseFieldProps<Field>;
|
|
36
|
+
export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a path array'>, Path extends PathInSchema<T> = any>(field: Path, options?: UseFieldOptions): UseFieldProps<FieldPath<SchemaAt<T, Path>>>;
|
|
37
|
+
export declare function useField<T extends z.ZodTypeAny = z.ZodBranded<z.ZodNever, 'cast to TypedUseArray<T> to pass a pathstring'>, Pathstring extends PathstringInSchema<T> = any>(field: Pathstring, options?: UseFieldOptions): UseFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>;
|
|
35
38
|
//# sourceMappingURL=useField.d.ts.map
|
package/useField.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useField.d.ts","
|
|
1
|
+
{"version":3,"file":"useField.d.ts","names":["z","FieldPath","FieldMeta","setParsedValue","setValue","setMeta","PathInSchema","PathstringInSchema","parsePathstring","SchemaAt","bindActionsToField","DeepPartial","UseFieldProps","ReturnType","Field","parsedValue","output","value","input","initialParsedValue","initialValue","error","dirty","pristine","valid","invalid","TypedUseField","ZodTypeAny","field","T","path","Path","Pathstring","UseFieldOptions","normalizeOnMount","useField","options","ZodBranded","ZodNever"],"sources":["src/useField.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|