@effect-app/vue-components 4.0.0-beta.31 → 4.0.0-beta.310

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.
Files changed (208) hide show
  1. package/README.md +13 -9
  2. package/dist/reset.css +39 -38
  3. package/dist/types/components/CommandButton.vue.d.ts +24 -5
  4. package/dist/types/components/Dialog.vue.d.ts +3 -1
  5. package/dist/types/components/FixedNuxtErrorBoundary.vue.d.ts +39 -0
  6. package/dist/types/components/OmegaForm/InputProps.d.ts +1 -1
  7. package/dist/types/components/OmegaForm/OmegaArray.vue.d.ts +1 -1
  8. package/dist/types/components/OmegaForm/OmegaAutoGen.vue.d.ts +2 -2
  9. package/dist/types/components/OmegaForm/OmegaErrorsInternal.vue.d.ts +1 -1
  10. package/dist/types/components/OmegaForm/OmegaFormInput.vue.d.ts +1 -1
  11. package/dist/types/components/OmegaForm/OmegaInput.vue.d.ts +1 -1
  12. package/dist/types/components/OmegaForm/OmegaInputVuetify.vue.d.ts +6 -0
  13. package/dist/types/components/OmegaForm/OmegaInternalInput.vue.d.ts +6 -9
  14. package/dist/types/components/OmegaForm/OmegaTaggedUnion.vue.d.ts +2 -2
  15. package/dist/types/components/OmegaForm/OmegaTaggedUnionInternal.vue.d.ts +3 -3
  16. package/dist/types/components/OmegaForm/OmegaWrapper.vue.d.ts +1 -1
  17. package/dist/types/components/OmegaForm/createUseFormWithCustomInput.d.ts +4 -2
  18. package/dist/types/components/OmegaForm/errors.d.ts +33 -0
  19. package/dist/types/components/OmegaForm/getOmegaStore.d.ts +1 -1
  20. package/dist/types/components/OmegaForm/hocs.d.ts +3 -0
  21. package/dist/types/components/OmegaForm/index.d.ts +14 -3
  22. package/dist/types/components/OmegaForm/inputs.d.ts +4 -0
  23. package/dist/types/components/OmegaForm/meta/checks.d.ts +4 -0
  24. package/dist/types/components/OmegaForm/meta/createMeta.d.ts +33 -0
  25. package/dist/types/components/OmegaForm/meta/defaults.d.ts +21 -0
  26. package/dist/types/components/OmegaForm/meta/redacted.d.ts +2 -0
  27. package/dist/types/components/OmegaForm/meta/types.d.ts +56 -0
  28. package/dist/types/components/OmegaForm/meta/walker.d.ts +18 -0
  29. package/dist/types/components/OmegaForm/persistency.d.ts +58 -0
  30. package/dist/types/components/OmegaForm/submit.d.ts +60 -0
  31. package/dist/types/components/OmegaForm/types.d.ts +312 -0
  32. package/dist/types/components/OmegaForm/useOmegaForm.d.ts +9 -213
  33. package/dist/types/components/OmegaForm/validation/localized.d.ts +10 -0
  34. package/dist/types/components/index.d.ts +1 -0
  35. package/dist/types/index.d.ts +0 -1
  36. package/dist/types/utils/index.d.ts +8 -8
  37. package/dist/vue-components.es.js +30 -44
  38. package/dist/vue-components10.es.js +5 -0
  39. package/dist/vue-components11.es.js +56 -0
  40. package/dist/vue-components12.es.js +5 -0
  41. package/dist/vue-components13.es.js +20 -0
  42. package/dist/vue-components14.es.js +49 -0
  43. package/dist/vue-components15.es.js +128 -0
  44. package/dist/vue-components16.es.js +65 -0
  45. package/dist/vue-components17.es.js +114 -0
  46. package/dist/vue-components18.es.js +22 -0
  47. package/dist/vue-components19.es.js +5 -0
  48. package/dist/vue-components2.es.js +11 -0
  49. package/dist/vue-components20.es.js +80 -0
  50. package/dist/vue-components21.es.js +93 -0
  51. package/dist/vue-components22.es.js +73 -0
  52. package/dist/vue-components23.es.js +12 -0
  53. package/dist/vue-components24.es.js +57 -0
  54. package/dist/vue-components25.es.js +5 -0
  55. package/dist/vue-components26.es.js +44 -0
  56. package/dist/vue-components27.es.js +5 -0
  57. package/dist/vue-components28.es.js +84 -0
  58. package/dist/vue-components3.es.js +98 -0
  59. package/dist/vue-components30.es.js +8 -0
  60. package/dist/vue-components31.es.js +9 -0
  61. package/dist/vue-components32.es.js +24 -0
  62. package/dist/vue-components33.es.js +300 -0
  63. package/dist/vue-components35.es.js +8 -0
  64. package/dist/vue-components36.es.js +73 -0
  65. package/dist/vue-components37.es.js +5 -0
  66. package/dist/vue-components38.es.js +64 -0
  67. package/dist/vue-components39.es.js +5 -0
  68. package/dist/vue-components4.es.js +5 -0
  69. package/dist/vue-components40.es.js +24 -0
  70. package/dist/vue-components41.es.js +5 -0
  71. package/dist/vue-components42.es.js +59 -0
  72. package/dist/vue-components43.es.js +5 -0
  73. package/dist/vue-components44.es.js +12 -0
  74. package/dist/vue-components45.es.js +22 -0
  75. package/dist/vue-components47.es.js +9 -0
  76. package/dist/vue-components48.es.js +4 -0
  77. package/dist/vue-components49.es.js +38 -0
  78. package/dist/vue-components5.es.js +24 -0
  79. package/dist/vue-components50.es.js +27 -0
  80. package/dist/vue-components51.es.js +28 -0
  81. package/dist/vue-components52.es.js +7 -0
  82. package/dist/vue-components53.es.js +18 -0
  83. package/dist/vue-components54.es.js +36 -0
  84. package/dist/vue-components55.es.js +18 -0
  85. package/dist/vue-components56.es.js +21 -0
  86. package/dist/vue-components57.es.js +30 -0
  87. package/dist/vue-components58.es.js +7 -0
  88. package/dist/vue-components59.es.js +9 -0
  89. package/dist/vue-components6.es.js +13 -0
  90. package/dist/vue-components60.es.js +38 -0
  91. package/dist/vue-components61.es.js +25 -0
  92. package/dist/vue-components62.es.js +128 -0
  93. package/dist/vue-components63.es.js +24 -0
  94. package/dist/vue-components64.es.js +21 -0
  95. package/dist/vue-components65.es.js +9 -0
  96. package/dist/vue-components66.es.js +19 -0
  97. package/dist/vue-components67.es.js +5 -0
  98. package/dist/vue-components68.es.js +29 -0
  99. package/dist/vue-components69.es.js +5 -0
  100. package/dist/vue-components7.es.js +13 -0
  101. package/dist/vue-components70.es.js +43 -0
  102. package/dist/vue-components71.es.js +101 -0
  103. package/dist/vue-components72.es.js +36 -0
  104. package/dist/vue-components73.es.js +19 -0
  105. package/dist/vue-components74.es.js +50 -0
  106. package/dist/vue-components8.es.js +35 -0
  107. package/dist/vue-components9.es.js +47 -0
  108. package/package.json +39 -33
  109. package/src/components/CommandButton.vue +96 -16
  110. package/src/components/Dialog.vue +0 -1
  111. package/src/components/FixedNuxtErrorBoundary.vue +112 -0
  112. package/src/components/OmegaForm/InputProps.ts +1 -1
  113. package/src/components/OmegaForm/OmegaArray.vue +8 -9
  114. package/src/components/OmegaForm/OmegaAutoGen.vue +3 -2
  115. package/src/components/OmegaForm/OmegaErrorsInternal.vue +1 -1
  116. package/src/components/OmegaForm/OmegaFormInput.vue +1 -1
  117. package/src/components/OmegaForm/OmegaInput.vue +26 -40
  118. package/src/components/OmegaForm/OmegaInputVuetify.vue +58 -8
  119. package/src/components/OmegaForm/OmegaInternalInput.vue +32 -13
  120. package/src/components/OmegaForm/OmegaTaggedUnion.vue +10 -3
  121. package/src/components/OmegaForm/OmegaTaggedUnionInternal.vue +6 -6
  122. package/src/components/OmegaForm/OmegaWrapper.vue +1 -1
  123. package/src/components/OmegaForm/blockDialog.ts +18 -6
  124. package/src/components/OmegaForm/createUseFormWithCustomInput.ts +16 -14
  125. package/src/components/OmegaForm/errors.ts +136 -0
  126. package/src/components/OmegaForm/getOmegaStore.ts +1 -1
  127. package/src/components/OmegaForm/hocs.ts +19 -0
  128. package/src/components/OmegaForm/index.ts +17 -4
  129. package/src/components/OmegaForm/inputs.ts +22 -0
  130. package/src/components/OmegaForm/meta/checks.ts +82 -0
  131. package/src/components/OmegaForm/meta/createMeta.ts +140 -0
  132. package/src/components/OmegaForm/meta/defaults.ts +262 -0
  133. package/src/components/OmegaForm/meta/redacted.ts +66 -0
  134. package/src/components/OmegaForm/meta/types.ts +78 -0
  135. package/src/components/OmegaForm/meta/walker.ts +248 -0
  136. package/src/components/OmegaForm/persistency.ts +247 -0
  137. package/src/components/OmegaForm/submit.ts +131 -0
  138. package/src/components/OmegaForm/types.ts +801 -0
  139. package/src/components/OmegaForm/useOmegaForm.ts +103 -896
  140. package/src/components/OmegaForm/useRegisterField.ts +1 -1
  141. package/src/components/OmegaForm/validation/localized.ts +203 -0
  142. package/src/components/index.ts +1 -0
  143. package/src/index.ts +0 -1
  144. package/src/reset.css +39 -38
  145. package/src/utils/index.ts +11 -8
  146. package/dist/types/components/OmegaForm/OmegaFormStuff.d.ts +0 -159
  147. package/dist/types/constants/index.d.ts +0 -1
  148. package/dist/vue-components.es10.js +0 -239
  149. package/dist/vue-components.es11.js +0 -32
  150. package/dist/vue-components.es12.js +0 -503
  151. package/dist/vue-components.es13.js +0 -49
  152. package/dist/vue-components.es14.js +0 -4
  153. package/dist/vue-components.es15.js +0 -4
  154. package/dist/vue-components.es16.js +0 -6
  155. package/dist/vue-components.es17.js +0 -13
  156. package/dist/vue-components.es18.js +0 -57
  157. package/dist/vue-components.es19.js +0 -56
  158. package/dist/vue-components.es2.js +0 -30
  159. package/dist/vue-components.es20.js +0 -8
  160. package/dist/vue-components.es21.js +0 -8
  161. package/dist/vue-components.es22.js +0 -5
  162. package/dist/vue-components.es23.js +0 -5
  163. package/dist/vue-components.es24.js +0 -4
  164. package/dist/vue-components.es25.js +0 -4
  165. package/dist/vue-components.es26.js +0 -4
  166. package/dist/vue-components.es27.js +0 -4
  167. package/dist/vue-components.es28.js +0 -19
  168. package/dist/vue-components.es29.js +0 -13
  169. package/dist/vue-components.es3.js +0 -17
  170. package/dist/vue-components.es30.js +0 -194
  171. package/dist/vue-components.es32.js +0 -31
  172. package/dist/vue-components.es33.js +0 -6
  173. package/dist/vue-components.es34.js +0 -4
  174. package/dist/vue-components.es35.js +0 -4
  175. package/dist/vue-components.es36.js +0 -113
  176. package/dist/vue-components.es38.js +0 -9
  177. package/dist/vue-components.es39.js +0 -34
  178. package/dist/vue-components.es4.js +0 -52
  179. package/dist/vue-components.es41.js +0 -6
  180. package/dist/vue-components.es42.js +0 -25
  181. package/dist/vue-components.es43.js +0 -7
  182. package/dist/vue-components.es44.js +0 -23
  183. package/dist/vue-components.es45.js +0 -32
  184. package/dist/vue-components.es46.js +0 -24
  185. package/dist/vue-components.es47.js +0 -14
  186. package/dist/vue-components.es48.js +0 -7
  187. package/dist/vue-components.es49.js +0 -21
  188. package/dist/vue-components.es5.js +0 -52
  189. package/dist/vue-components.es50.js +0 -11
  190. package/dist/vue-components.es51.js +0 -33
  191. package/dist/vue-components.es52.js +0 -50
  192. package/dist/vue-components.es53.js +0 -28
  193. package/dist/vue-components.es54.js +0 -13
  194. package/dist/vue-components.es55.js +0 -67
  195. package/dist/vue-components.es56.js +0 -58
  196. package/dist/vue-components.es57.js +0 -19
  197. package/dist/vue-components.es58.js +0 -35
  198. package/dist/vue-components.es59.js +0 -31
  199. package/dist/vue-components.es6.js +0 -69
  200. package/dist/vue-components.es60.js +0 -44
  201. package/dist/vue-components.es61.js +0 -4
  202. package/dist/vue-components.es62.js +0 -46
  203. package/dist/vue-components.es63.js +0 -4
  204. package/dist/vue-components.es7.js +0 -83
  205. package/dist/vue-components.es8.js +0 -63
  206. package/dist/vue-components.es9.js +0 -21
  207. package/src/components/OmegaForm/OmegaFormStuff.ts +0 -1276
  208. package/src/constants/index.ts +0 -1
@@ -0,0 +1,801 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import type { DeepKeys, DeepValue, FieldApi, FieldAsyncValidateOrFn, FieldState, FieldValidateOrFn, FormApi, FormAsyncValidateOrFn, FormOptions, FormState, FormValidateOrFn, StandardSchemaV1, VueFormApi } from "@tanstack/vue-form"
3
+ import type * as Effect from "effect-app/Effect"
4
+ import type * as S from "effect-app/Schema"
5
+ import type { UnionToTuples } from "effect-app/utils"
6
+ import type { Fiber as EffectFiber } from "effect/Fiber"
7
+ import type * as Order from "effect/Order"
8
+ import type { Redacted } from "effect/Redacted"
9
+ import type { AllowedComponentProps, Component, ComponentCustomProps, ComputedRef, PublicProps, ShallowUnwrapRef, VNode, VNodeProps } from "vue"
10
+ import type { MergedInputProps, OmegaFieldInternalApi, TaggedUnionOptionsArray } from "./InputProps"
11
+ import type { MetaRecord, NestedKeyOf } from "./meta/types"
12
+ import type { defaultValuesPriorityUnion as PersistencyPriority, Policies as PersistencyPolicies } from "./persistency"
13
+ import type { FormErrors } from "./submit"
14
+
15
+ export type FieldPath<T> = unknown extends T ? string
16
+ // technically we cannot have primitive at the root
17
+ : T extends string | boolean | number | null | undefined | symbol | bigint | Redacted<any> ? ""
18
+ // technically we cannot have array at the root
19
+ : T extends ReadonlyArray<infer U> ? FieldPath_<U, `[${number}]`>
20
+ : {
21
+ [K in keyof T]: FieldPath_<T[K], K & string>
22
+ }[keyof T]
23
+
24
+ export type FieldPath_<T, Path extends string> = unknown extends T ? string
25
+ : T extends string | boolean | number | null | undefined | symbol | bigint | Redacted<any> ? Path
26
+ : T extends ReadonlyArray<infer U> ? FieldPath_<U, `${Path}[${number}]`> | Path
27
+ : {
28
+ [K in keyof T]: FieldPath_<T[K], `${Path}.${K & string}`>
29
+ }[keyof T]
30
+
31
+ export type BaseProps<From, TName extends FieldPath<From>> = {
32
+ /**
33
+ * Will fallback to i18n when not specified.
34
+ * Can also be provided via #label slot for custom HTML labels.
35
+ * When using the slot, it receives bindings: { required, id, label }
36
+ */
37
+ label?: string
38
+ validators?: FieldValidators<From>
39
+ /**
40
+ * Overrides the schema-derived `meta.required`.
41
+ * When omitted, requiredness is inferred from the schema.
42
+ */
43
+ required?: boolean
44
+ // Use FlexibleArrayPath: if name contains [], just use TName; otherwise intersect with Leaves<From>
45
+ name: TName
46
+ /**
47
+ * Optional class to apply to the input element.
48
+ * - If a string is provided, it will be used instead of the general class
49
+ * - If null is provided, no class will be applied (neither inputClass nor general class)
50
+ * - If undefined (not provided), the general class will be used
51
+ */
52
+ inputClass?: string | null
53
+ }
54
+
55
+ export type TypesWithOptions = "radio" | "select" | "multiple" | "autocomplete" | "autocompletemultiple"
56
+ export type DefaultTypeProps = {
57
+ type?: TypeOverride
58
+ options?: undefined
59
+ } | {
60
+ type?: TypesWithOptions
61
+ // TODO: options should depend on `type`, but since there is auto-type, we can't currently enforce it.
62
+ // hence we allow it also for type? (undefined) atm
63
+ options?: {
64
+ title: string
65
+ value: unknown
66
+ }[]
67
+ }
68
+
69
+ /** Registered `omegaConfig.inputs` keys as valid `type` values; `never` when nothing is registered. */
70
+ export type CustomTypeProps<TInputs> =
71
+ // `string extends keyof` collapses the wide `Record<string, Component>` fallback
72
+ // (no `inputs` registered) so `type` can't widen to any string.
73
+ string extends keyof TInputs ? never
74
+ : keyof TInputs extends never ? never
75
+ : {
76
+ type: keyof TInputs & string
77
+ options?: { title: string; value: unknown }[]
78
+ }
79
+
80
+ /** `form.Input` `type`/`options`: built-ins plus types registered via `omegaConfig.inputs`. */
81
+ export type TypePropsFor<TInputs> = DefaultTypeProps | CustomTypeProps<TInputs>
82
+
83
+ export type OmegaInputPropsBase<
84
+ From extends Record<PropertyKey, any>,
85
+ To extends Record<PropertyKey, any>,
86
+ Name extends DeepKeys<From>
87
+ > =
88
+ & {
89
+ form: OF<From, To> & {
90
+ meta: MetaRecord<From>
91
+ i18nNamespace?: string
92
+ }
93
+ }
94
+ & BaseProps<From, Name>
95
+ & DefaultTypeProps
96
+
97
+ export type OmegaInputProps<
98
+ From extends Record<PropertyKey, any>,
99
+ To extends Record<PropertyKey, any>,
100
+ Name extends DeepKeys<From>,
101
+ TypeProps = DefaultTypeProps
102
+ > = {
103
+ form: OmegaFormReturn<From, To, TypeProps> & {
104
+ meta: MetaRecord<From>
105
+ i18nNamespace?: string
106
+ }
107
+ } & BaseProps<From, Name>
108
+
109
+ export type OmegaArrayProps<
110
+ From extends Record<PropertyKey, any>,
111
+ To extends Record<PropertyKey, any>,
112
+ Name extends DeepKeys<From>
113
+ > =
114
+ & Omit<
115
+ OmegaInputProps<From, To, Name>,
116
+ "validators" | "options" | "label" | "type" | "items" | "name"
117
+ >
118
+ & {
119
+ name: DeepKeys<From>
120
+ defaultItems?: DeepValue<From, DeepKeys<From>>
121
+ // deprecated items, caused bugs in state update, use defaultItems instead. It's not a simple Never, because Volar explodes
122
+ items?: "please use `defaultItems` instead"
123
+ }
124
+
125
+ // Single source of truth for the built-in input types: the runtime array drives
126
+ // both the `TypeOverride` union and the renderer's "is this type handled?" check,
127
+ // so the two cannot drift apart.
128
+ export const typeOverrides = [
129
+ "string",
130
+ "text",
131
+ "number",
132
+ "select",
133
+ "multiple",
134
+ "boolean",
135
+ "radio",
136
+ "autocomplete",
137
+ "autocompletemultiple",
138
+ "switch",
139
+ "range",
140
+ "password",
141
+ "email",
142
+ "date",
143
+ // native HTML input types that `getInputType` already maps 1:1
144
+ "tel",
145
+ "url",
146
+ "color",
147
+ "time",
148
+ "search"
149
+ ] as const
150
+
151
+ export type TypeOverride = typeof typeOverrides[number]
152
+
153
+ export interface OmegaError {
154
+ label: string
155
+ inputId: string
156
+ errors: readonly string[]
157
+ }
158
+
159
+ export type FormProps<From, To> =
160
+ & Omit<
161
+ FormOptions<
162
+ From,
163
+ FormValidateOrFn<From> | undefined,
164
+ FormValidateOrFn<From> | undefined,
165
+ StandardSchemaV1<From, To>,
166
+ FormValidateOrFn<From> | undefined,
167
+ FormAsyncValidateOrFn<From> | undefined,
168
+ FormValidateOrFn<From> | undefined,
169
+ FormAsyncValidateOrFn<From> | undefined,
170
+ FormValidateOrFn<From> | undefined,
171
+ FormAsyncValidateOrFn<From> | undefined,
172
+ FormAsyncValidateOrFn<From> | undefined,
173
+ Record<string, any> | undefined // TODO
174
+ >,
175
+ | "onSubmit"
176
+ | "defaultValues"
177
+ >
178
+ & {
179
+ // when defaultValues are allowed to be undefined, then they should also be allowed to be partial
180
+ // this fixes validator issues where a defaultValue of "" leads to "requires at least 1 character", while manually emptying the field changes it to "is required"
181
+ defaultValues?: Partial<From>
182
+ onSubmit?: (props: {
183
+ formApi: OmegaFormParams<From, To>
184
+ meta: any
185
+ value: To
186
+ }) => Promise<any> | EffectFiber<any, any> | Effect.Effect<unknown, any>
187
+ }
188
+
189
+ export type OmegaFormParams<From, To> = FormApi<
190
+ From,
191
+ FormValidateOrFn<From> | undefined,
192
+ FormValidateOrFn<From> | undefined,
193
+ StandardSchemaV1<From, To>,
194
+ FormValidateOrFn<From> | undefined,
195
+ FormAsyncValidateOrFn<From> | undefined,
196
+ FormValidateOrFn<From> | undefined,
197
+ FormAsyncValidateOrFn<From> | undefined,
198
+ FormValidateOrFn<From> | undefined,
199
+ FormAsyncValidateOrFn<From> | undefined,
200
+ FormAsyncValidateOrFn<From> | undefined,
201
+ Record<string, any> | undefined
202
+ >
203
+
204
+ export type OmegaFormState<From, To> = FormState<
205
+ From,
206
+ FormValidateOrFn<From> | undefined,
207
+ FormValidateOrFn<From> | undefined,
208
+ StandardSchemaV1<From, To>,
209
+ FormValidateOrFn<From> | undefined,
210
+ FormAsyncValidateOrFn<From> | undefined,
211
+ FormValidateOrFn<From> | undefined,
212
+ FormAsyncValidateOrFn<From> | undefined,
213
+ FormValidateOrFn<From> | undefined,
214
+ FormAsyncValidateOrFn<From> | undefined,
215
+ FormAsyncValidateOrFn<From> | undefined
216
+ >
217
+
218
+ // TODO: stitch TSubmitMeta somehow
219
+ export type OmegaFormApi<From, To, TSubmitMeta = Record<string, any> | undefined> =
220
+ & OmegaFormParams<From, To>
221
+ & VueFormApi<
222
+ From,
223
+ FormValidateOrFn<From> | undefined,
224
+ FormValidateOrFn<From> | undefined,
225
+ StandardSchemaV1<From, To>,
226
+ FormValidateOrFn<From> | undefined,
227
+ FormAsyncValidateOrFn<From> | undefined,
228
+ FormValidateOrFn<From> | undefined,
229
+ FormAsyncValidateOrFn<From> | undefined,
230
+ FormValidateOrFn<From> | undefined,
231
+ FormAsyncValidateOrFn<From> | undefined,
232
+ FormAsyncValidateOrFn<From> | undefined,
233
+ TSubmitMeta
234
+ >
235
+
236
+ export type FormComponent<T, S> = VueFormApi<
237
+ T,
238
+ FormValidateOrFn<T> | undefined,
239
+ FormValidateOrFn<T> | undefined,
240
+ StandardSchemaV1<T, S>,
241
+ FormValidateOrFn<T> | undefined,
242
+ FormAsyncValidateOrFn<T> | undefined,
243
+ FormValidateOrFn<T> | undefined,
244
+ FormAsyncValidateOrFn<T> | undefined,
245
+ FormValidateOrFn<T> | undefined,
246
+ FormAsyncValidateOrFn<T> | undefined,
247
+ FormAsyncValidateOrFn<T> | undefined,
248
+ Record<string, any> | undefined
249
+ >
250
+
251
+ export type FormType<
252
+ From extends Record<PropertyKey, any>,
253
+ To extends Record<PropertyKey, any>,
254
+ Name extends DeepKeys<From>
255
+ > = OmegaFormApi<From, To> & {
256
+ Field: OmegaFieldInternalApi<From, Name>
257
+ }
258
+
259
+ export type PrefixFromDepth<
260
+ K extends string | number,
261
+ _TDepth extends any[]
262
+ > = K
263
+
264
+ export type FieldValidators<T> = {
265
+ onChangeAsync?: FieldAsyncValidateOrFn<T, any, any>
266
+ onChange?: FieldValidateOrFn<T, any, any>
267
+ onBlur?: FieldValidateOrFn<T, any, any>
268
+ onBlurAsync?: FieldAsyncValidateOrFn<T, any, any>
269
+ }
270
+
271
+ export type OmegaAutoGenMeta<
272
+ From extends Record<PropertyKey, any>,
273
+ To extends Record<PropertyKey, any>,
274
+ Name extends DeepKeys<From>
275
+ > = Omit<OmegaInputProps<From, To, Name>, "form">
276
+
277
+ type keysRule<T> =
278
+ | {
279
+ keys?: NestedKeyOf<T>[]
280
+ banKeys?: "You should only use one of banKeys or keys, not both, moron"
281
+ }
282
+ | {
283
+ keys?: "You should only use one of banKeys or keys, not both, moron"
284
+ banKeys?: NestedKeyOf<T>[]
285
+ }
286
+
287
+ export type Policies = PersistencyPolicies
288
+ export type defaultValuesPriorityUnion = PersistencyPriority
289
+
290
+ export type OmegaConfig<T> = {
291
+ i18nNamespace?: string
292
+
293
+ persistency?: {
294
+ /** Order of importance:
295
+ * - "querystring": Highest priority when persisting
296
+ * - "local" and then "session": Lower priority storage options
297
+ */
298
+ policies?: UnionToTuples<Policies>
299
+ overrideDefaultValues?: "deprecated: use defaultValuesPriority"
300
+ id?: string
301
+ } & keysRule<T>
302
+
303
+ ignorePreventCloseEvents?: boolean
304
+
305
+ /**
306
+ * Prevents browser window/tab exit when form has unsaved changes.
307
+ * Shows native browser "Leave site?" dialog.
308
+ *
309
+ * @remarks
310
+ * - Opt-in only: Must explicitly enable
311
+ * - Independent from data persistence feature
312
+ */
313
+ preventWindowExit?: "prevent" | "prevent-and-reset" | "nope"
314
+
315
+ input?: any
316
+
317
+ /**
318
+ * Register a custom input component per `type` (new types or overrides). Each
319
+ * key becomes a valid `<form.Input type="...">` value; components receive the
320
+ * `OmegaRendererProps` contract (`{ inputProps, field, state }`).
321
+ */
322
+ inputs?: Record<string, Component>
323
+
324
+ /**
325
+ * Default values order is: Tanstack default values passed as second parameter to useOmegaForm, then persistency
326
+ * default values from querystring or local/session storage, then defaults from schema
327
+ * You can customize the order and with omegaConfig.defaultValuesPriority
328
+ * default value = ['tanstack', 'persistency', 'schema']
329
+ */
330
+ defaultValuesPriority?: UnionToTuples<defaultValuesPriorityUnion>
331
+
332
+ defaultFromSchema?: "deprecated: use defaultValuesPriority"
333
+ }
334
+
335
+ export interface OF<From, To> extends OmegaFormApi<From, To> {
336
+ meta: MetaRecord<From>
337
+ unionMeta: Record<string, MetaRecord<From>>
338
+ inputs?: Record<string, Component>
339
+ clear: () => void
340
+ /**
341
+ * Backfills the untouched children of any materialised nullable struct with
342
+ * their schema default (or `null`), so the live `values` matches what
343
+ * validation and decoding see. Called after a field change.
344
+ */
345
+ normalizeNullableStructs: () => void
346
+ i18nNamespace?: string
347
+ ignorePreventCloseEvents?: boolean
348
+ registerField: (
349
+ field: ComputedRef<{
350
+ name: string
351
+ label: string
352
+ id: string
353
+ }>
354
+ ) => void
355
+ /** @experimental */
356
+ handleSubmitEffect: {
357
+ /**
358
+ * when `checkErrors` is true, the Effect will fail with `FormErrors<From>` when there are validation errors
359
+ * @experimental */
360
+ (options: { checkErrors: true; meta?: Record<string, any> }): Effect.Effect<void, FormErrors<From>>
361
+ /** @experimental */
362
+ (options?: { meta?: Record<string, any> }): Effect.Effect<void>
363
+ }
364
+ }
365
+
366
+ type __VLS_PrettifyLocal<T> =
367
+ & {
368
+ [K in keyof T]: T[K]
369
+ }
370
+ & {}
371
+
372
+ // Type aliases for Array component slots - using cached types for performance
373
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
374
+ type CachedFieldApi<
375
+ From extends Record<PropertyKey, any>,
376
+ To extends Record<PropertyKey, any>,
377
+ TypeProps = DefaultTypeProps
378
+ > = FieldApi<
379
+ From,
380
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
381
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>,
382
+ | FieldValidateOrFn<
383
+ From,
384
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
385
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
386
+ >
387
+ | undefined,
388
+ | FieldValidateOrFn<
389
+ From,
390
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
391
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
392
+ >
393
+ | undefined,
394
+ | FieldAsyncValidateOrFn<
395
+ From,
396
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
397
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
398
+ >
399
+ | undefined,
400
+ | FieldValidateOrFn<
401
+ From,
402
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
403
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
404
+ >
405
+ | undefined,
406
+ | FieldAsyncValidateOrFn<
407
+ From,
408
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
409
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
410
+ >
411
+ | undefined,
412
+ | FieldValidateOrFn<
413
+ From,
414
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
415
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
416
+ >
417
+ | undefined,
418
+ | FieldAsyncValidateOrFn<
419
+ From,
420
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
421
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
422
+ >
423
+ | undefined,
424
+ | FieldValidateOrFn<
425
+ From,
426
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
427
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
428
+ >
429
+ | undefined,
430
+ | FieldAsyncValidateOrFn<
431
+ From,
432
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
433
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
434
+ >
435
+ | undefined,
436
+ FormValidateOrFn<From> | undefined,
437
+ FormValidateOrFn<From> | undefined,
438
+ StandardSchemaV1<From, To>,
439
+ FormValidateOrFn<From> | undefined,
440
+ FormAsyncValidateOrFn<From> | undefined,
441
+ FormValidateOrFn<From> | undefined,
442
+ FormAsyncValidateOrFn<From> | undefined,
443
+ FormValidateOrFn<From> | undefined,
444
+ FormAsyncValidateOrFn<From> | undefined,
445
+ FormAsyncValidateOrFn<From> | undefined,
446
+ Record<string, any> | undefined
447
+ >
448
+
449
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
450
+ type CachedFieldState<
451
+ From extends Record<PropertyKey, any>,
452
+ To extends Record<PropertyKey, any>,
453
+ TypeProps = DefaultTypeProps
454
+ > = FieldState<
455
+ From,
456
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
457
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>,
458
+ | FieldValidateOrFn<
459
+ From,
460
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
461
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
462
+ >
463
+ | undefined,
464
+ | FieldValidateOrFn<
465
+ From,
466
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
467
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
468
+ >
469
+ | undefined,
470
+ | FieldAsyncValidateOrFn<
471
+ From,
472
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
473
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
474
+ >
475
+ | undefined,
476
+ | FieldValidateOrFn<
477
+ From,
478
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
479
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
480
+ >
481
+ | undefined,
482
+ | FieldAsyncValidateOrFn<
483
+ From,
484
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
485
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
486
+ >
487
+ | undefined,
488
+ | FieldValidateOrFn<
489
+ From,
490
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
491
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
492
+ >
493
+ | undefined,
494
+ | FieldAsyncValidateOrFn<
495
+ From,
496
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
497
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
498
+ >
499
+ | undefined,
500
+ | FieldValidateOrFn<
501
+ From,
502
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
503
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
504
+ >
505
+ | undefined,
506
+ | FieldAsyncValidateOrFn<
507
+ From,
508
+ OmegaFormReturn<From, To, TypeProps>["_keys"],
509
+ DeepValue<From, OmegaFormReturn<From, To, TypeProps>["_keys"]>
510
+ >
511
+ | undefined,
512
+ FormValidateOrFn<From> | undefined,
513
+ FormValidateOrFn<From> | undefined,
514
+ StandardSchemaV1<From, To>,
515
+ FormValidateOrFn<From> | undefined,
516
+ FormAsyncValidateOrFn<From> | undefined,
517
+ FormValidateOrFn<From> | undefined,
518
+ FormAsyncValidateOrFn<From> | undefined,
519
+ FormValidateOrFn<From> | undefined,
520
+ FormAsyncValidateOrFn<From> | undefined
521
+ >
522
+
523
+ export interface OmegaFormReturn<
524
+ From extends Record<PropertyKey, any>,
525
+ To extends Record<PropertyKey, any>,
526
+ TypeProps = DefaultTypeProps
527
+ > extends OF<From, To> {
528
+ // Pre-computed type aliases - computed ONCE for performance
529
+ _paths: FieldPath<From>
530
+ _keys: NestedKeyOf<From>
531
+ _schema: S.Codec<To, From>
532
+
533
+ // this crazy thing here is copied from the OmegaFormInput.vue.d.ts, with `From` removed as Generic, instead closed over from the From generic above..
534
+ Input: <Name extends OmegaFormReturn<From, To, TypeProps>["_paths"]>(
535
+ __VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"],
536
+ __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>,
537
+ __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"],
538
+ __VLS_setup?: Promise<{
539
+ props:
540
+ & __VLS_PrettifyLocal<
541
+ & Pick<
542
+ & Partial<{}>
543
+ & Omit<
544
+ {} & VNodeProps & AllowedComponentProps & ComponentCustomProps,
545
+ never
546
+ >,
547
+ never
548
+ >
549
+ & TypeProps
550
+ & Partial<{}>
551
+ >
552
+ & BaseProps<From, Name>
553
+ & PublicProps
554
+ expose(exposed: ShallowUnwrapRef<{}>): void
555
+ attrs: any
556
+ slots: {
557
+ default?(props: MergedInputProps<From, Name>): void
558
+ label?: (props: { required: boolean; id: string; label: string }) => void
559
+ }
560
+ emit: {}
561
+ }>
562
+ ) => VNode & {
563
+ __ctx?: Awaited<typeof __VLS_setup>
564
+ }
565
+ Errors: (
566
+ __VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"],
567
+ __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>,
568
+ __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"],
569
+ __VLS_setup?: Promise<{
570
+ props:
571
+ & __VLS_PrettifyLocal<
572
+ & Pick<
573
+ & Partial<{}>
574
+ & Omit<
575
+ {} & VNodeProps & AllowedComponentProps & ComponentCustomProps,
576
+ never
577
+ >,
578
+ never
579
+ >
580
+ & Partial<{}>
581
+ >
582
+ & PublicProps
583
+ expose(exposed: ShallowUnwrapRef<{}>): void
584
+ attrs: any
585
+ slots: {
586
+ default: (props: { errors: readonly OmegaError[]; showedGeneralErrors: string[] }) => void
587
+ }
588
+ emit: {}
589
+ }>
590
+ ) => VNode & {
591
+ __ctx?: Awaited<typeof __VLS_setup>
592
+ }
593
+ TaggedUnion: <Name extends OmegaFormReturn<From, To, TypeProps>["_keys"]>(
594
+ __VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"],
595
+ __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>,
596
+ __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"],
597
+ __VLS_setup?: Promise<{
598
+ props:
599
+ & __VLS_PrettifyLocal<
600
+ & Pick<
601
+ & Partial<{}>
602
+ & Omit<
603
+ {} & VNodeProps & AllowedComponentProps & ComponentCustomProps,
604
+ never
605
+ >,
606
+ never
607
+ >
608
+ & {
609
+ name?: Name
610
+ type?: "select" | "radio"
611
+ options: TaggedUnionOptionsArray<From, Name>
612
+ _debugName?: [NoInfer<Name>]
613
+ label?: string
614
+ }
615
+ & {}
616
+ >
617
+ & PublicProps
618
+ expose(exposed: ShallowUnwrapRef<{}>): void
619
+ attrs: any
620
+ slots: Record<
621
+ string,
622
+ (props: {
623
+ field: FieldApi<
624
+ From,
625
+ Name,
626
+ DeepValue<From, Name>,
627
+ any,
628
+ any,
629
+ any,
630
+ any,
631
+ any,
632
+ any,
633
+ any,
634
+ any,
635
+ any,
636
+ any,
637
+ any,
638
+ any,
639
+ any,
640
+ any,
641
+ any,
642
+ any,
643
+ any,
644
+ any,
645
+ any,
646
+ any
647
+ >
648
+ state: FieldState<
649
+ From,
650
+ Name,
651
+ DeepValue<From, Name>,
652
+ any,
653
+ any,
654
+ any,
655
+ any,
656
+ any,
657
+ any,
658
+ any,
659
+ any,
660
+ any,
661
+ any,
662
+ any,
663
+ any,
664
+ any,
665
+ any,
666
+ any,
667
+ any,
668
+ any,
669
+ any
670
+ >
671
+ }) => any
672
+ >
673
+ emit: {}
674
+ }>
675
+ ) => VNode & {
676
+ __ctx?: Awaited<typeof __VLS_setup>
677
+ }
678
+ Array: <Name extends OmegaFormReturn<From, To, TypeProps>["_keys"]>(
679
+ __VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"],
680
+ __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>,
681
+ __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"],
682
+ __VLS_setup?: Promise<{
683
+ props:
684
+ & __VLS_PrettifyLocal<
685
+ & Pick<
686
+ & Partial<{}>
687
+ & Omit<
688
+ {} & VNodeProps & AllowedComponentProps & ComponentCustomProps,
689
+ never
690
+ >,
691
+ never
692
+ >
693
+ & (Omit<OmegaArrayProps<From, To, Name>, "form">)
694
+ & {}
695
+ >
696
+ & PublicProps
697
+ expose(exposed: ShallowUnwrapRef<{}>): void
698
+ attrs: any
699
+ slots: {
700
+ "pre-array"?: (props: {
701
+ field: CachedFieldApi<From, To, TypeProps>
702
+ state: CachedFieldState<From, To, TypeProps>
703
+ }) => any
704
+ } & {
705
+ default?: (props: {
706
+ subField: CachedFieldApi<From, To, TypeProps>
707
+ subState: CachedFieldState<From, To, TypeProps>
708
+ index: number
709
+ field: CachedFieldApi<From, To, TypeProps>
710
+ }) => any
711
+ } & {
712
+ "post-array"?: (props: {
713
+ field: CachedFieldApi<From, To, TypeProps>
714
+ state: CachedFieldState<From, To, TypeProps>
715
+ }) => any
716
+ } & {
717
+ field?: (props: {
718
+ field: CachedFieldApi<From, To, TypeProps>
719
+ }) => any
720
+ }
721
+ emit: {}
722
+ }>
723
+ ) => VNode & {
724
+ __ctx?: Awaited<typeof __VLS_setup>
725
+ }
726
+
727
+ AutoGen: <Name extends OmegaFormReturn<From, To, TypeProps>["_keys"]>(
728
+ __VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"],
729
+ __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>,
730
+ __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"],
731
+ __VLS_setup?: Promise<{
732
+ props:
733
+ & __VLS_PrettifyLocal<
734
+ Pick<
735
+ & Partial<{}>
736
+ & Omit<
737
+ {} & VNodeProps & AllowedComponentProps & ComponentCustomProps,
738
+ never
739
+ >,
740
+ never
741
+ > & {
742
+ // form: OmegaInputProps<From, To>["form"]
743
+ pick?: OmegaFormReturn<From, To, TypeProps>["_keys"][]
744
+ omit?: OmegaFormReturn<From, To, TypeProps>["_keys"][]
745
+ labelMap?: (key: OmegaFormReturn<From, To, TypeProps>["_keys"]) => string | undefined
746
+ filterMap?: <M extends OmegaAutoGenMeta<From, To, Name>>(
747
+ key: OmegaFormReturn<From, To, TypeProps>["_keys"],
748
+ meta: M
749
+ ) => boolean | M
750
+ order?: OmegaFormReturn<From, To, TypeProps>["_keys"][]
751
+ sort?: Order.Order<OmegaAutoGenMeta<From, To, Name>>
752
+ } & {}
753
+ >
754
+ & PublicProps
755
+ expose(exposed: ShallowUnwrapRef<{}>): void
756
+ attrs: any
757
+ slots: {
758
+ default(props: {
759
+ child: OmegaAutoGenMeta<From, To, Name>
760
+ }): void
761
+ }
762
+ emit: {}
763
+ }>
764
+ ) => VNode & {
765
+ __ctx?: Awaited<typeof __VLS_setup>
766
+ }
767
+
768
+ Form: <K extends keyof OmegaFormState<To, From>>(
769
+ __VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"],
770
+ __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>,
771
+ __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"],
772
+ __VLS_setup?: Promise<{
773
+ props:
774
+ & __VLS_PrettifyLocal<
775
+ Pick<
776
+ & Partial<{}>
777
+ & Omit<
778
+ {} & VNodeProps & AllowedComponentProps & ComponentCustomProps,
779
+ never
780
+ >,
781
+ never
782
+ > & {
783
+ // form: OmegaFormReturn<From, To, Props>
784
+ disabled?: boolean
785
+ subscribe?: K[]
786
+ } & {}
787
+ >
788
+ & PublicProps
789
+ expose(exposed: ShallowUnwrapRef<{}>): void
790
+ attrs: any
791
+ slots: {
792
+ default(props: {
793
+ subscribedValues: K[] extends undefined[] ? Record<string, never> : Pick<OmegaFormState<From, To>, K>
794
+ }): void
795
+ }
796
+ emit: {}
797
+ }>
798
+ ) => VNode & {
799
+ __ctx?: Awaited<typeof __VLS_setup>
800
+ }
801
+ }