@owanturist/signal-form 0.0.0 → 0.1.0
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/LICENSE +29 -0
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +954 -0
- package/dist/index.d.ts +954 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/package.json +8 -8
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,954 @@
|
|
|
1
|
+
import * as _owanturist_signal from '@owanturist/signal';
|
|
2
|
+
import { ReadonlySignal, Monitor, Signal, Equal } from '@owanturist/signal';
|
|
3
|
+
|
|
4
|
+
type Result<TError, TData> = [TError, null] | [null, TData];
|
|
5
|
+
|
|
6
|
+
type ValidateStrategy = "onTouch" | "onChange" | "onSubmit" | "onInit";
|
|
7
|
+
declare const VALIDATE_ON_TOUCH: "onTouch";
|
|
8
|
+
declare const VALIDATE_ON_CHANGE: "onChange";
|
|
9
|
+
declare const VALIDATE_ON_SUBMIT: "onSubmit";
|
|
10
|
+
declare const VALIDATE_ON_INIT: "onInit";
|
|
11
|
+
|
|
12
|
+
interface SignalFormParams {
|
|
13
|
+
readonly "input.setter": unknown;
|
|
14
|
+
readonly "input.schema": unknown;
|
|
15
|
+
readonly "output.schema": unknown;
|
|
16
|
+
readonly "output.schema.verbose": unknown;
|
|
17
|
+
readonly "flag.setter": unknown;
|
|
18
|
+
readonly "flag.schema": unknown;
|
|
19
|
+
readonly "flag.schema.verbose": unknown;
|
|
20
|
+
readonly "validateOn.setter": unknown;
|
|
21
|
+
readonly "validateOn.schema": unknown;
|
|
22
|
+
readonly "validateOn.schema.verbose": unknown;
|
|
23
|
+
readonly "error.setter": unknown;
|
|
24
|
+
readonly "error.schema": unknown;
|
|
25
|
+
readonly "error.schema.verbose": unknown;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
declare class Emitter<TPayload = unknown, TResult = void> {
|
|
29
|
+
private readonly _listeners;
|
|
30
|
+
_subscribe(listener: (payload: TPayload) => TResult): VoidFunction;
|
|
31
|
+
_emit(payload: TPayload): ReadonlyArray<TResult>;
|
|
32
|
+
_isEmpty(): boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type Lazy<T> = () => T;
|
|
36
|
+
declare function Lazy<T>(init: () => T): Lazy<T>;
|
|
37
|
+
|
|
38
|
+
declare abstract class SignalFormState<TParams extends SignalFormParams = any> {
|
|
39
|
+
abstract readonly _host: Lazy<SignalForm<TParams>>;
|
|
40
|
+
readonly _root: SignalFormState;
|
|
41
|
+
constructor(parent: null | SignalFormState);
|
|
42
|
+
protected abstract _childOf(parent: null | SignalFormState): SignalFormState<TParams>;
|
|
43
|
+
_clone(): SignalFormState<TParams>;
|
|
44
|
+
_parentOf<TChild extends SignalFormState>(child: TChild): TChild;
|
|
45
|
+
_hasSameRootWith(another: SignalFormState): boolean;
|
|
46
|
+
abstract readonly _initial: ReadonlySignal<TParams["input.schema"]>;
|
|
47
|
+
abstract _replaceInitial(monitor: Monitor, state: undefined | this, isMounting: boolean): void;
|
|
48
|
+
abstract _setInitial(monitor: Monitor, setter: TParams["input.setter"]): void;
|
|
49
|
+
abstract readonly _input: ReadonlySignal<TParams["input.schema"]>;
|
|
50
|
+
abstract _setInput(monitor: Monitor, setter: TParams["input.setter"]): void;
|
|
51
|
+
abstract readonly _error: ReadonlySignal<null | TParams["error.schema"]>;
|
|
52
|
+
abstract readonly _errorVerbose: ReadonlySignal<TParams["error.schema.verbose"]>;
|
|
53
|
+
abstract _setError(monitor: Monitor, setter: TParams["error.setter"]): void;
|
|
54
|
+
abstract readonly _validateOn: ReadonlySignal<TParams["validateOn.schema"]>;
|
|
55
|
+
abstract readonly _validateOnVerbose: ReadonlySignal<TParams["validateOn.schema.verbose"]>;
|
|
56
|
+
abstract _setValidateOn(monitor: Monitor, setter: TParams["validateOn.setter"]): void;
|
|
57
|
+
abstract readonly _touched: ReadonlySignal<TParams["flag.schema"]>;
|
|
58
|
+
abstract readonly _touchedVerbose: ReadonlySignal<TParams["flag.schema.verbose"]>;
|
|
59
|
+
abstract _setTouched(monitor: Monitor, setter: TParams["flag.setter"]): void;
|
|
60
|
+
abstract readonly _output: ReadonlySignal<null | TParams["output.schema"]>;
|
|
61
|
+
abstract readonly _outputVerbose: ReadonlySignal<TParams["output.schema.verbose"]>;
|
|
62
|
+
abstract readonly _valid: ReadonlySignal<TParams["flag.schema"]>;
|
|
63
|
+
abstract readonly _validVerbose: ReadonlySignal<TParams["flag.schema.verbose"]>;
|
|
64
|
+
abstract readonly _invalid: ReadonlySignal<TParams["flag.schema"]>;
|
|
65
|
+
abstract readonly _invalidVerbose: ReadonlySignal<TParams["flag.schema.verbose"]>;
|
|
66
|
+
abstract readonly _validated: ReadonlySignal<TParams["flag.schema"]>;
|
|
67
|
+
abstract readonly _validatedVerbose: ReadonlySignal<TParams["flag.schema.verbose"]>;
|
|
68
|
+
abstract _forceValidated(monitor: Monitor): void;
|
|
69
|
+
abstract readonly _dirty: ReadonlySignal<TParams["flag.schema"]>;
|
|
70
|
+
abstract readonly _dirtyVerbose: ReadonlySignal<TParams["flag.schema.verbose"]>;
|
|
71
|
+
abstract readonly _dirtyOn: ReadonlySignal<TParams["flag.schema"]>;
|
|
72
|
+
abstract readonly _dirtyOnVerbose: ReadonlySignal<TParams["flag.schema.verbose"]>;
|
|
73
|
+
readonly _onFocus: Emitter<unknown, void>;
|
|
74
|
+
_getFocusFirstInvalid(monitor: Monitor): null | VoidFunction;
|
|
75
|
+
readonly _onSubmit: Emitter<unknown, void | Promise<unknown>>;
|
|
76
|
+
readonly _submitAttempts: Signal<number>;
|
|
77
|
+
readonly _submittingCount: Signal<number>;
|
|
78
|
+
_submitWith(monitor: Monitor, output: TParams["output.schema"]): ReadonlyArray<void | Promise<unknown>>;
|
|
79
|
+
/**
|
|
80
|
+
* Comparing to {@link _setInitial} where the setter is always provided,
|
|
81
|
+
* this method allows the resetter to be undefined.
|
|
82
|
+
* This is for cases when the initial value is not changed BUT
|
|
83
|
+
* the {@link SignalForm} should perform the rest of reset operations,
|
|
84
|
+
* in comparison to {@link _setInitial} which only sets the initial value AND
|
|
85
|
+
* not called at all if the setter is not provided.
|
|
86
|
+
*/
|
|
87
|
+
abstract _reset(monitor: Monitor, resetter: undefined | TParams["input.setter"]): void;
|
|
88
|
+
abstract _getChildren<TChildParams extends SignalFormParams>(monitor: Monitor): ReadonlyArray<SignalFormChild<TChildParams, TParams>>;
|
|
89
|
+
}
|
|
90
|
+
interface SignalFormChild<TChildParams extends SignalFormParams, TParams extends SignalFormParams> {
|
|
91
|
+
_state: SignalFormState<TChildParams>;
|
|
92
|
+
_mapToChild(this: void, parentValue: TParams["output.schema"]): TChildParams["output.schema"];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
declare abstract class SignalForm<TParams extends SignalFormParams = any> {
|
|
96
|
+
protected static _getState<TFormParams extends SignalFormParams>({ _state, }: SignalForm<TFormParams>): SignalFormState<TFormParams>;
|
|
97
|
+
protected abstract readonly _state: SignalFormState<TParams>;
|
|
98
|
+
clone(): SignalForm<TParams>;
|
|
99
|
+
getOutput(monitor: Monitor): null | TParams["output.schema"];
|
|
100
|
+
getOutput<TResult>(monitor: Monitor, select: (concise: null | TParams["output.schema"], verbose: TParams["output.schema.verbose"]) => TResult): TResult;
|
|
101
|
+
getInitial(monitor: Monitor): TParams["input.schema"];
|
|
102
|
+
setInitial(setter: TParams["input.setter"]): void;
|
|
103
|
+
getInput(monitor: Monitor): TParams["input.schema"];
|
|
104
|
+
setInput(setter: TParams["input.setter"]): void;
|
|
105
|
+
getError(monitor: Monitor): null | TParams["error.schema"];
|
|
106
|
+
getError<TResult>(monitor: Monitor, select: (concise: null | TParams["error.schema"], verbose: TParams["error.schema.verbose"]) => TResult): TResult;
|
|
107
|
+
setError(setter: TParams["error.setter"]): void;
|
|
108
|
+
getValidateOn(monitor: Monitor): TParams["validateOn.schema"];
|
|
109
|
+
getValidateOn<TResult>(monitor: Monitor, select: (concise: TParams["validateOn.schema"], verbose: TParams["validateOn.schema.verbose"]) => TResult): TResult;
|
|
110
|
+
setValidateOn(setter: TParams["validateOn.setter"]): void;
|
|
111
|
+
isValid(monitor: Monitor): boolean;
|
|
112
|
+
isValid<TResult>(monitor: Monitor, select: (concise: TParams["flag.schema"], verbose: TParams["flag.schema.verbose"]) => TResult): TResult;
|
|
113
|
+
isInvalid(monitor: Monitor): boolean;
|
|
114
|
+
isInvalid<TResult>(monitor: Monitor, select: (concise: TParams["flag.schema"], verbose: TParams["flag.schema.verbose"]) => TResult): TResult;
|
|
115
|
+
isValidated(monitor: Monitor): boolean;
|
|
116
|
+
isValidated<TResult>(monitor: Monitor, select: (concise: TParams["flag.schema"], verbose: TParams["flag.schema.verbose"]) => TResult): TResult;
|
|
117
|
+
isDirty(monitor: Monitor): boolean;
|
|
118
|
+
isDirty<TResult>(monitor: Monitor, select: (concise: TParams["flag.schema"], verbose: TParams["flag.schema.verbose"]) => TResult): TResult;
|
|
119
|
+
isTouched(monitor: Monitor): boolean;
|
|
120
|
+
isTouched<TResult>(monitor: Monitor, select: (concise: TParams["flag.schema"], verbose: TParams["flag.schema.verbose"]) => TResult): TResult;
|
|
121
|
+
setTouched(setter: TParams["flag.setter"]): void;
|
|
122
|
+
reset(resetter?: TParams["input.setter"]): void;
|
|
123
|
+
onFocusWhenInvalid(onFocus: (error: TParams["error.schema.verbose"]) => void): VoidFunction;
|
|
124
|
+
focusFirstInvalid(): void;
|
|
125
|
+
getSubmitCount(monitor: Monitor): number;
|
|
126
|
+
isSubmitting(monitor: Monitor): boolean;
|
|
127
|
+
onSubmit(listener: (output: TParams["output.schema"]) => void | Promise<unknown>): VoidFunction;
|
|
128
|
+
submit(): Promise<void>;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
type GetSignalFormParams<TTarget> = TTarget extends SignalForm<infer TParams> ? TParams : never;
|
|
132
|
+
|
|
133
|
+
type GetSignalFormParam<TTarget, TKey extends keyof SignalFormParams> = GetSignalFormParams<TTarget>[TKey];
|
|
134
|
+
|
|
135
|
+
type GetSignalFormError<TForm extends SignalForm> = GetSignalFormParam<TForm, "error.schema">;
|
|
136
|
+
|
|
137
|
+
type GetSignalFormErrorSetter<TForm extends SignalForm> = GetSignalFormParam<TForm, "error.setter">;
|
|
138
|
+
|
|
139
|
+
type GetSignalFormErrorVerbose<TForm extends SignalForm> = GetSignalFormParam<TForm, "error.schema.verbose">;
|
|
140
|
+
|
|
141
|
+
type GetSignalFormFlag<TForm extends SignalForm> = GetSignalFormParam<TForm, "flag.schema">;
|
|
142
|
+
|
|
143
|
+
type GetSignalFormFlagSetter<TForm extends SignalForm> = GetSignalFormParam<TForm, "flag.setter">;
|
|
144
|
+
|
|
145
|
+
type GetSignalFormFlagVerbose<TForm extends SignalForm> = GetSignalFormParam<TForm, "flag.schema.verbose">;
|
|
146
|
+
|
|
147
|
+
type GetSignalFormInput<TForm extends SignalForm> = GetSignalFormParam<TForm, "input.schema">;
|
|
148
|
+
|
|
149
|
+
type GetSignalFormInputSetter<TForm extends SignalForm> = GetSignalFormParam<TForm, "input.setter">;
|
|
150
|
+
|
|
151
|
+
type GetSignalFormOutput<TForm extends SignalForm> = GetSignalFormParam<TForm, "output.schema">;
|
|
152
|
+
|
|
153
|
+
type GetSignalFormOutputVerbose<TForm extends SignalForm> = GetSignalFormParam<TForm, "output.schema.verbose">;
|
|
154
|
+
|
|
155
|
+
type GetSignalFormValidateOn<TForm extends SignalForm> = GetSignalFormParam<TForm, "validateOn.schema">;
|
|
156
|
+
|
|
157
|
+
type GetSignalFormValidateOnSetter<TForm extends SignalForm> = GetSignalFormParam<TForm, "validateOn.setter">;
|
|
158
|
+
|
|
159
|
+
type GetSignalFormValidateOnVerbose<TForm extends SignalForm> = GetSignalFormParam<TForm, "validateOn.schema.verbose">;
|
|
160
|
+
|
|
161
|
+
declare function isSignalForm(value: unknown): value is SignalForm;
|
|
162
|
+
|
|
163
|
+
type FormUnitTransformer<TInput, TOutput> = (input: TInput) => TOutput;
|
|
164
|
+
|
|
165
|
+
type FormUnitValidator<TInput, TError, TOutput> = (input: TInput) => Result<TError, TOutput>;
|
|
166
|
+
|
|
167
|
+
type Setter<TValue, TPrevValues extends ReadonlyArray<unknown> = [TValue]> = TValue | ((...args: TPrevValues) => TValue);
|
|
168
|
+
|
|
169
|
+
type FormUnitErrorSetter<TError> = Setter<null | TError>;
|
|
170
|
+
|
|
171
|
+
type FormUnitFlagSetter = Setter<boolean>;
|
|
172
|
+
|
|
173
|
+
type FormUnitInputSetter<TInput> = Setter<TInput, [TInput, TInput]>;
|
|
174
|
+
|
|
175
|
+
type FormUnitValidateOnSetter = Setter<ValidateStrategy>;
|
|
176
|
+
|
|
177
|
+
interface FormUnitParams<TInput, TError, TOutput> extends SignalFormParams {
|
|
178
|
+
readonly "input.setter": FormUnitInputSetter<TInput>;
|
|
179
|
+
readonly "input.schema": TInput;
|
|
180
|
+
readonly "output.schema": TOutput;
|
|
181
|
+
readonly "output.schema.verbose": null | TOutput;
|
|
182
|
+
readonly "flag.setter": FormUnitFlagSetter;
|
|
183
|
+
readonly "flag.schema": boolean;
|
|
184
|
+
readonly "flag.schema.verbose": boolean;
|
|
185
|
+
readonly "validateOn.setter": FormUnitValidateOnSetter;
|
|
186
|
+
readonly "validateOn.schema": ValidateStrategy;
|
|
187
|
+
readonly "validateOn.schema.verbose": ValidateStrategy;
|
|
188
|
+
readonly "error.setter": FormUnitErrorSetter<TError>;
|
|
189
|
+
readonly "error.schema": null | TError;
|
|
190
|
+
readonly "error.schema.verbose": null | TError;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
interface ZodLikeIssue {
|
|
194
|
+
message: string;
|
|
195
|
+
}
|
|
196
|
+
type ZodLikeError = {
|
|
197
|
+
get errors(): ReadonlyArray<ZodLikeIssue>;
|
|
198
|
+
} | {
|
|
199
|
+
errors: ReadonlyArray<ZodLikeIssue>;
|
|
200
|
+
} | {
|
|
201
|
+
issues: ReadonlyArray<ZodLikeIssue>;
|
|
202
|
+
};
|
|
203
|
+
type ZodLikeSafeParseResult<TOutput> = {
|
|
204
|
+
success: false;
|
|
205
|
+
error: ZodLikeError;
|
|
206
|
+
} | {
|
|
207
|
+
success: true;
|
|
208
|
+
data: TOutput;
|
|
209
|
+
};
|
|
210
|
+
type ZodLikeSchema<TOutput> = {
|
|
211
|
+
parse(input: unknown): TOutput;
|
|
212
|
+
} | {
|
|
213
|
+
safeParse(input: unknown): ZodLikeSafeParseResult<TOutput>;
|
|
214
|
+
};
|
|
215
|
+
declare function zodLikeParse<TOutput>(schema: ZodLikeSchema<TOutput>, input: unknown): Result<ReadonlyArray<string>, TOutput>;
|
|
216
|
+
|
|
217
|
+
interface FormUnitTransform<TInput, TError, TOutput> {
|
|
218
|
+
readonly _transformer: boolean;
|
|
219
|
+
readonly _validator: FormUnitValidator<TInput, TError, TOutput>;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
declare class FormUnitState<TInput, TError, TOutput> extends SignalFormState<FormUnitParams<TInput, TError, TOutput>> {
|
|
223
|
+
readonly _initialState: Signal<{
|
|
224
|
+
_explicit: Signal<boolean>;
|
|
225
|
+
_current: Signal<TInput>;
|
|
226
|
+
}>;
|
|
227
|
+
readonly _input: Signal<TInput>;
|
|
228
|
+
private readonly _customError;
|
|
229
|
+
readonly _validateOn: Signal<ValidateStrategy>;
|
|
230
|
+
readonly _touched: Signal<boolean>;
|
|
231
|
+
private readonly _transform;
|
|
232
|
+
private readonly _isInputDirty;
|
|
233
|
+
private readonly _isInputEqual;
|
|
234
|
+
private readonly _isOutputEqual;
|
|
235
|
+
private readonly _isErrorEqual;
|
|
236
|
+
readonly _host: Lazy<FormUnit$1<TInput, TError, TOutput>>;
|
|
237
|
+
constructor(parent: null | SignalFormState, _initialState: Signal<{
|
|
238
|
+
_explicit: Signal<boolean>;
|
|
239
|
+
_current: Signal<TInput>;
|
|
240
|
+
}>, _input: Signal<TInput>, _customError: Signal<null | TError>, _validateOn: Signal<ValidateStrategy>, _touched: Signal<boolean>, _transform: Signal<FormUnitTransform<TInput, TError, TOutput>>, _isInputDirty: Equal<TInput>, _isInputEqual: Equal<TInput>, _isOutputEqual: Equal<null | TOutput>, _isErrorEqual: Equal<null | TError>);
|
|
241
|
+
_childOf(parent: null | SignalFormState): FormUnitState<TInput, TError, TOutput>;
|
|
242
|
+
_initial: ReadonlySignal<TInput>;
|
|
243
|
+
_replaceInitial(monitor: Monitor, state: undefined | FormUnitState<TInput, TError, TOutput>, isMounting: boolean): void;
|
|
244
|
+
_setInitial(monitor: Monitor, setter: FormUnitInputSetter<TInput>): void;
|
|
245
|
+
_setInput(monitor: Monitor, setter: FormUnitInputSetter<TInput>): void;
|
|
246
|
+
readonly _error: ReadonlySignal<null | TError>;
|
|
247
|
+
readonly _errorVerbose: ReadonlySignal<null | TError>;
|
|
248
|
+
_setError(_monitor: Monitor, setter: FormUnitErrorSetter<TError>): void;
|
|
249
|
+
readonly _validateOnVerbose: ReadonlySignal<ValidateStrategy>;
|
|
250
|
+
_setValidateOn(monitor: Monitor, setter: FormUnitValidateOnSetter): void;
|
|
251
|
+
readonly _touchedVerbose: ReadonlySignal<boolean>;
|
|
252
|
+
_setTouched(_monitor: Monitor, setter: FormUnitParams<TInput, TError, TOutput>["flag.setter"]): void;
|
|
253
|
+
readonly _output: ReadonlySignal<null | TOutput>;
|
|
254
|
+
readonly _outputVerbose: ReadonlySignal<null | TOutput>;
|
|
255
|
+
readonly _valid: ReadonlySignal<boolean>;
|
|
256
|
+
readonly _validVerbose: ReadonlySignal<boolean>;
|
|
257
|
+
readonly _invalid: ReadonlySignal<boolean>;
|
|
258
|
+
readonly _invalidVerbose: ReadonlySignal<boolean>;
|
|
259
|
+
readonly _validated: Signal<boolean>;
|
|
260
|
+
readonly _validatedVerbose: ReadonlySignal<boolean>;
|
|
261
|
+
_forceValidated(): void;
|
|
262
|
+
readonly _dirty: ReadonlySignal<boolean>;
|
|
263
|
+
readonly _dirtyVerbose: ReadonlySignal<boolean>;
|
|
264
|
+
readonly _dirtyOn: Signal<boolean>;
|
|
265
|
+
readonly _dirtyOnVerbose: Signal<boolean>;
|
|
266
|
+
_reset(monitor: Monitor, resetter: undefined | FormUnitInputSetter<TInput>): void;
|
|
267
|
+
_getChildren(): ReadonlyArray<never>;
|
|
268
|
+
_setTransform(transformer: FormUnitTransformer<TInput, TOutput>): void;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
declare class FormUnit$1<TInput, TError, TOutput> extends SignalForm<FormUnitParams<TInput, TError, TOutput>> {
|
|
272
|
+
readonly _state: FormUnitState<TInput, TError, TOutput>;
|
|
273
|
+
constructor(_state: FormUnitState<TInput, TError, TOutput>);
|
|
274
|
+
setTransform(transformer: FormUnitTransformer<TInput, TOutput>): void;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
interface FormUnitOptions<TInput, TError = null> {
|
|
278
|
+
/**
|
|
279
|
+
* The initial or custom error associated with the form value.
|
|
280
|
+
* This can be used to set an error state manually.
|
|
281
|
+
*
|
|
282
|
+
* @default null
|
|
283
|
+
*/
|
|
284
|
+
readonly error?: null | TError;
|
|
285
|
+
readonly touched?: boolean;
|
|
286
|
+
/**
|
|
287
|
+
* PERFORMANCE OPTIMIZATION
|
|
288
|
+
*
|
|
289
|
+
* A equality check function that determines whether the input value changes.
|
|
290
|
+
* When it does, the {@link SignalForm.getInput} returns the new value.
|
|
291
|
+
* Otherwise, it returns the previous value.
|
|
292
|
+
*
|
|
293
|
+
* Useful for none primitive values such as Objects, Arrays, Date, etc.
|
|
294
|
+
* Intended to improve performance but do not affect business logic.
|
|
295
|
+
*
|
|
296
|
+
* @default Object.is
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* const initial = { count: 0 }
|
|
300
|
+
*
|
|
301
|
+
* const form = FormUnit(initial, {
|
|
302
|
+
* isInputEqual: (left, right) => left.count === right.count,
|
|
303
|
+
* })
|
|
304
|
+
*
|
|
305
|
+
* form.setInput({ count: 0 })
|
|
306
|
+
* form.getInput(monitor) === initial // true
|
|
307
|
+
*/
|
|
308
|
+
readonly isInputEqual?: Equal<TInput>;
|
|
309
|
+
/**
|
|
310
|
+
* BUSINESS LOGIC TUNING
|
|
311
|
+
*
|
|
312
|
+
* A equality check function that determines whether the input is dirty.
|
|
313
|
+
* When it is, the {@link SignalForm.isDirty} returns true.
|
|
314
|
+
* Fallbacks to not(isInputEqual) if not provided.
|
|
315
|
+
*
|
|
316
|
+
* Useful for values that have intermediate states deviating from the initial value,
|
|
317
|
+
* but should not be considered dirty such as strings, unsorted arrays, etc.
|
|
318
|
+
* Intended to tune business logic and avoid false positives for dirty states.
|
|
319
|
+
*
|
|
320
|
+
* @default not(isInputEqual)
|
|
321
|
+
*
|
|
322
|
+
* @example
|
|
323
|
+
* const form = FormUnit("", {
|
|
324
|
+
* isInputDirty: (left, right) => left.trim() !== right.trim(),
|
|
325
|
+
* })
|
|
326
|
+
*
|
|
327
|
+
* form.setInput(" ")
|
|
328
|
+
* form.isDirty(monitor) === false
|
|
329
|
+
*/
|
|
330
|
+
readonly isInputDirty?: Equal<TInput>;
|
|
331
|
+
/**
|
|
332
|
+
* PERFORMANCE OPTIMIZATION
|
|
333
|
+
*
|
|
334
|
+
* A equality check function that determines whether the validation error change.
|
|
335
|
+
* When it does, the {@link SignalForm.getError} returns the new value.
|
|
336
|
+
* Otherwise, it returns the previous value.
|
|
337
|
+
*
|
|
338
|
+
* Useful for none primitive values such as Objects, Arrays, Date, etc.
|
|
339
|
+
* Intended to improve performance but do not affect business logic.
|
|
340
|
+
*
|
|
341
|
+
* @default Object.is
|
|
342
|
+
*/
|
|
343
|
+
readonly isErrorEqual?: Equal<TError>;
|
|
344
|
+
/**
|
|
345
|
+
* @default input
|
|
346
|
+
*/
|
|
347
|
+
readonly initial?: TInput;
|
|
348
|
+
}
|
|
349
|
+
interface FormUnitTransformedOptions<TInput, TError = null, TOutput = TInput> extends Omit<FormUnitOptions<TInput, TError>, "isOutputEqual"> {
|
|
350
|
+
readonly transform: FormUnitTransformer<TInput, TOutput>;
|
|
351
|
+
/**
|
|
352
|
+
* PERFORMANCE OPTIMIZATION
|
|
353
|
+
*
|
|
354
|
+
* A equality check function that determines whether the output value changes.
|
|
355
|
+
* When it does, the {@link SignalForm.getOutput} returns the new value.
|
|
356
|
+
*
|
|
357
|
+
* Useful for none primitive values such as Objects, Arrays, Date, etc.
|
|
358
|
+
* Intended to improve performance but do not affect business logic.
|
|
359
|
+
*
|
|
360
|
+
* @default Object.is
|
|
361
|
+
*/
|
|
362
|
+
readonly isOutputEqual?: Equal<TOutput>;
|
|
363
|
+
}
|
|
364
|
+
interface FormUnitSchemaOptions<TInput, TOutput = TInput> extends Omit<FormUnitTransformedOptions<TInput, ReadonlyArray<string>, TOutput>, "transform" | "isErrorEqual"> {
|
|
365
|
+
/**
|
|
366
|
+
* @default "onTouch"
|
|
367
|
+
*/
|
|
368
|
+
readonly validateOn?: ValidateStrategy;
|
|
369
|
+
readonly schema: ZodLikeSchema<TOutput>;
|
|
370
|
+
}
|
|
371
|
+
interface FormUnitValidatedOptions<TInput, TError = null, TOutput = TInput> extends Omit<FormUnitTransformedOptions<TInput, TError, TOutput>, "transform"> {
|
|
372
|
+
/**
|
|
373
|
+
* @default "onTouch"
|
|
374
|
+
*/
|
|
375
|
+
readonly validateOn?: ValidateStrategy;
|
|
376
|
+
readonly validate: FormUnitValidator<TInput, TError, TOutput>;
|
|
377
|
+
}
|
|
378
|
+
type FormUnit<TInput, TError = null, TOutput = TInput> = FormUnit$1<TInput, TError, TOutput>;
|
|
379
|
+
declare function FormUnit<TInput, TError = null, TOutput = TInput>(input: TInput, options: FormUnitValidatedOptions<TInput, TError, TOutput> | FormUnitTransformedOptions<TInput, TError, TOutput>): FormUnit<TInput, TError, TOutput>;
|
|
380
|
+
declare function FormUnit<TInput, TOutput = TInput>(input: TInput, options: FormUnitSchemaOptions<TInput, TOutput>): FormUnit<TInput, ReadonlyArray<string>, TOutput>;
|
|
381
|
+
declare function FormUnit<TInput>(input: TInput, options?: FormUnitOptions<TInput>): FormUnit<TInput, null, TInput>;
|
|
382
|
+
declare function FormUnit<TInput, TError>(input: TInput, options?: FormUnitOptions<TInput, TError>): FormUnit<TInput, TError, TInput>;
|
|
383
|
+
|
|
384
|
+
declare function isFormUnit(value: unknown): value is FormUnit$1<unknown, unknown, unknown>;
|
|
385
|
+
|
|
386
|
+
type FormShapeFields = Record<string, any>;
|
|
387
|
+
|
|
388
|
+
type Compute<Obj> = unknown & {
|
|
389
|
+
[K in keyof Obj]: Obj[K];
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
type FilterKeys<TObject, TValue> = {
|
|
393
|
+
[K in keyof TObject]: TObject[K] extends TValue ? K : never;
|
|
394
|
+
}[keyof TObject];
|
|
395
|
+
|
|
396
|
+
type OmitValues<TObject, TValue> = Compute<Omit<TObject, FilterKeys<TObject, TValue>>>;
|
|
397
|
+
|
|
398
|
+
type FallbackParamWhenNever<TKey extends keyof SignalFormParams, TFallback, TParam> = [
|
|
399
|
+
TParam
|
|
400
|
+
] extends [never] ? TKey extends "input.schema" | "output.schema" | "output.schema.verbose" ? TFallback : never : TParam;
|
|
401
|
+
type GetFormShapeParam<TFields extends FormShapeFields, TKey extends keyof SignalFormParams> = OmitValues<{
|
|
402
|
+
readonly [TField in keyof TFields]: FallbackParamWhenNever<TKey, TFields[TField], GetSignalFormParam<TFields[TField], TKey>>;
|
|
403
|
+
}, never>;
|
|
404
|
+
|
|
405
|
+
type FormShapeErrorVerbose<TFields extends FormShapeFields> = GetFormShapeParam<TFields, "error.schema.verbose">;
|
|
406
|
+
|
|
407
|
+
type FormShapeErrorSetter<TFields extends FormShapeFields> = Setter<null | Partial<GetFormShapeParam<TFields, "error.setter">>, [
|
|
408
|
+
FormShapeErrorVerbose<TFields>
|
|
409
|
+
]>;
|
|
410
|
+
|
|
411
|
+
type FormShapeFlagVerbose<TFields extends FormShapeFields> = GetFormShapeParam<TFields, "flag.schema.verbose">;
|
|
412
|
+
|
|
413
|
+
type FormShapeFlagSetter<TFields extends FormShapeFields> = Setter<boolean | Partial<GetFormShapeParam<TFields, "flag.setter">>, [
|
|
414
|
+
FormShapeFlagVerbose<TFields>
|
|
415
|
+
]>;
|
|
416
|
+
|
|
417
|
+
type FormShapeInput<TFields extends FormShapeFields> = GetFormShapeParam<TFields, "input.schema">;
|
|
418
|
+
|
|
419
|
+
type FormShapeInputSetter<TFields extends FormShapeFields> = Setter<Partial<GetFormShapeParam<TFields, "input.setter">>, [
|
|
420
|
+
FormShapeInput<TFields>,
|
|
421
|
+
FormShapeInput<TFields>
|
|
422
|
+
]>;
|
|
423
|
+
|
|
424
|
+
type FormShapeValidateOnVerbose<TFields extends FormShapeFields> = GetFormShapeParam<TFields, "validateOn.schema.verbose">;
|
|
425
|
+
|
|
426
|
+
type FormShapeValidateOnSetter<TFields extends FormShapeFields> = Setter<ValidateStrategy | Partial<GetFormShapeParam<TFields, "validateOn.setter">>, [
|
|
427
|
+
FormShapeValidateOnVerbose<TFields>
|
|
428
|
+
]>;
|
|
429
|
+
|
|
430
|
+
type FormMeta<TValue> = (monitor: Monitor) => TValue;
|
|
431
|
+
|
|
432
|
+
type FormShapeError<TFields extends FormShapeFields> = null | GetFormShapeParam<TFields, "error.schema">;
|
|
433
|
+
|
|
434
|
+
type FormShapeFlag<TFields extends FormShapeFields> = boolean | GetFormShapeParam<TFields, "flag.schema">;
|
|
435
|
+
|
|
436
|
+
type FormShapeOutput<TFields extends FormShapeFields> = GetFormShapeParam<TFields, "output.schema">;
|
|
437
|
+
|
|
438
|
+
type FormShapeOutputVerbose<TFields extends FormShapeFields> = GetFormShapeParam<TFields, "output.schema.verbose">;
|
|
439
|
+
|
|
440
|
+
type FormShapeValidateOn<TFields extends FormShapeFields> = ValidateStrategy | GetFormShapeParam<TFields, "validateOn.schema">;
|
|
441
|
+
|
|
442
|
+
interface FormShapeParams<TFields extends FormShapeFields> extends SignalFormParams {
|
|
443
|
+
readonly "input.schema": FormShapeInput<TFields>;
|
|
444
|
+
readonly "input.setter": FormShapeInputSetter<TFields>;
|
|
445
|
+
readonly "output.schema": FormShapeOutput<TFields>;
|
|
446
|
+
readonly "output.schema.verbose": FormShapeOutputVerbose<TFields>;
|
|
447
|
+
readonly "flag.setter": FormShapeFlagSetter<TFields>;
|
|
448
|
+
readonly "flag.schema": FormShapeFlag<TFields>;
|
|
449
|
+
readonly "flag.schema.verbose": FormShapeFlagVerbose<TFields>;
|
|
450
|
+
readonly "validateOn.setter": FormShapeValidateOnSetter<TFields>;
|
|
451
|
+
readonly "validateOn.schema": FormShapeValidateOn<TFields>;
|
|
452
|
+
readonly "validateOn.schema.verbose": FormShapeValidateOnVerbose<TFields>;
|
|
453
|
+
readonly "error.setter": FormShapeErrorSetter<TFields>;
|
|
454
|
+
readonly "error.schema": FormShapeError<TFields>;
|
|
455
|
+
readonly "error.schema.verbose": FormShapeErrorVerbose<TFields>;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
type FormShapeStateFields<TFields extends FormShapeFields> = OmitValues<{
|
|
459
|
+
[TField in keyof TFields]: TFields[TField] extends SignalForm<infer TParams> ? SignalFormState<TParams> : never;
|
|
460
|
+
}, never>;
|
|
461
|
+
type FormShapeStateMeta<TFields extends FormShapeFields> = OmitValues<{
|
|
462
|
+
[TField in keyof TFields]: TFields[TField] extends SignalForm ? never : Signal<TFields[TField]>;
|
|
463
|
+
}, never>;
|
|
464
|
+
declare class FormShapeState<TFields extends FormShapeFields = FormShapeFields> extends SignalFormState<FormShapeParams<TFields>> {
|
|
465
|
+
readonly _host: Lazy<FormShape$1<TFields>>;
|
|
466
|
+
readonly _fields: FormShapeStateFields<TFields>;
|
|
467
|
+
readonly _meta: FormShapeStateMeta<TFields>;
|
|
468
|
+
constructor(parent: null | SignalFormState, fields: FormShapeStateFields<TFields>, meta: FormShapeStateMeta<TFields>);
|
|
469
|
+
_childOf(parent: null | SignalFormState): FormShapeState<TFields>;
|
|
470
|
+
readonly _initial: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "input.schema">] extends [never] ? TFields[TField] : GetSignalFormParam<TFields[TField], "input.schema">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "input.schema">] extends [never] ? TFields[TField] : GetSignalFormParam<TFields[TField], "input.schema">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
471
|
+
_replaceInitial(monitor: Monitor, state: undefined | FormShapeState<TFields>, isMounting: boolean): void;
|
|
472
|
+
_setInitial(monitor: Monitor, setter: FormShapeInputSetter<TFields>): void;
|
|
473
|
+
readonly _input: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "input.schema">] extends [never] ? TFields[TField] : GetSignalFormParam<TFields[TField], "input.schema">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "input.schema">] extends [never] ? TFields[TField] : GetSignalFormParam<TFields[TField], "input.schema">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
474
|
+
_setInput(monitor: Monitor, setter: FormShapeInputSetter<TFields>): void;
|
|
475
|
+
readonly _error: _owanturist_signal.ReadonlySignal<FormShapeError<TFields>>;
|
|
476
|
+
readonly _errorVerbose: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "error.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "error.schema.verbose">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "error.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "error.schema.verbose">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
477
|
+
_setError(monitor: Monitor, setter: FormShapeErrorSetter<TFields>): void;
|
|
478
|
+
readonly _validateOn: _owanturist_signal.ReadonlySignal<FormShapeValidateOn<TFields>>;
|
|
479
|
+
readonly _validateOnVerbose: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "validateOn.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "validateOn.schema.verbose">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "validateOn.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "validateOn.schema.verbose">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
480
|
+
_setValidateOn(monitor: Monitor, setter: FormShapeValidateOnSetter<TFields>): void;
|
|
481
|
+
readonly _touched: _owanturist_signal.ReadonlySignal<FormShapeFlag<TFields>>;
|
|
482
|
+
readonly _touchedVerbose: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
483
|
+
_setTouched(monitor: Monitor, setter: FormShapeFlagSetter<TFields>): void;
|
|
484
|
+
readonly _output: _owanturist_signal.ReadonlySignal<(Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "output.schema">] extends [never] ? TFields[TField] : GetSignalFormParam<TFields[TField], "output.schema">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "output.schema">] extends [never] ? TFields[TField] : GetSignalFormParam<TFields[TField], "output.schema">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never) | null>;
|
|
485
|
+
readonly _outputVerbose: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "output.schema.verbose">] extends [never] ? TFields[TField] : GetSignalFormParam<TFields[TField], "output.schema.verbose">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "output.schema.verbose">] extends [never] ? TFields[TField] : GetSignalFormParam<TFields[TField], "output.schema.verbose">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
486
|
+
readonly _valid: _owanturist_signal.ReadonlySignal<FormShapeFlag<TFields>>;
|
|
487
|
+
readonly _validVerbose: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
488
|
+
readonly _invalid: _owanturist_signal.ReadonlySignal<FormShapeFlag<TFields>>;
|
|
489
|
+
readonly _invalidVerbose: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
490
|
+
readonly _validated: _owanturist_signal.ReadonlySignal<FormShapeFlag<TFields>>;
|
|
491
|
+
readonly _validatedVerbose: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
492
|
+
_forceValidated(monitor: Monitor): void;
|
|
493
|
+
readonly _dirty: _owanturist_signal.ReadonlySignal<FormShapeFlag<TFields>>;
|
|
494
|
+
readonly _dirtyVerbose: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
495
|
+
readonly _dirtyOn: _owanturist_signal.ReadonlySignal<FormShapeFlag<TFields>>;
|
|
496
|
+
readonly _dirtyOnVerbose: _owanturist_signal.ReadonlySignal<Omit<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, FilterKeys<{ readonly [TField in keyof TFields]: [GetSignalFormParam<TFields[TField], "flag.schema.verbose">] extends [never] ? never : GetSignalFormParam<TFields[TField], "flag.schema.verbose">; }, never>> extends infer T ? { [K in keyof T]: T[K]; } : never>;
|
|
497
|
+
_reset(monitor: Monitor, resetter: undefined | FormShapeInputSetter<TFields>): void;
|
|
498
|
+
_getChildren<TChildParams extends SignalFormParams>(): ReadonlyArray<SignalFormChild<TChildParams, FormShapeParams<TFields>>>;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
type FormShapeField<TField> = TField extends SignalForm ? TField : FormMeta<TField>;
|
|
502
|
+
declare class FormShape$1<TFields extends FormShapeFields> extends SignalForm<FormShapeParams<TFields>> {
|
|
503
|
+
readonly _state: FormShapeState<TFields>;
|
|
504
|
+
static _getState: typeof SignalForm._getState;
|
|
505
|
+
readonly fields: {
|
|
506
|
+
readonly [TField in keyof TFields]: FormShapeField<TFields[TField]>;
|
|
507
|
+
};
|
|
508
|
+
constructor(_state: FormShapeState<TFields>);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
interface FormShapeOptions<TFields extends FormShapeFields> {
|
|
512
|
+
readonly input?: FormShapeInputSetter<TFields>;
|
|
513
|
+
readonly initial?: FormShapeInputSetter<TFields>;
|
|
514
|
+
readonly touched?: FormShapeFlagSetter<TFields>;
|
|
515
|
+
readonly validateOn?: FormShapeValidateOnSetter<TFields>;
|
|
516
|
+
readonly error?: FormShapeErrorSetter<TFields>;
|
|
517
|
+
}
|
|
518
|
+
type FormShape<TFields extends FormShapeFields> = FormShape$1<TFields>;
|
|
519
|
+
declare function FormShape<TFields extends FormShapeFields>(fields: TFields, { input, initial, touched, validateOn, error }?: FormShapeOptions<TFields>): FormShape<TFields>;
|
|
520
|
+
|
|
521
|
+
declare function isFormShape(value: unknown): value is FormShape$1<FormShapeFields>;
|
|
522
|
+
|
|
523
|
+
type FormListErrorVerbose<TElement extends SignalForm> = ReadonlyArray<GetSignalFormErrorVerbose<TElement>>;
|
|
524
|
+
|
|
525
|
+
type FormListErrorSetter<TElement extends SignalForm> = Setter<null | ReadonlyArray<undefined | GetSignalFormErrorSetter<TElement>>, [
|
|
526
|
+
FormListErrorVerbose<TElement>
|
|
527
|
+
]>;
|
|
528
|
+
|
|
529
|
+
type FormListFlagVerbose<TElement extends SignalForm> = ReadonlyArray<GetSignalFormFlagVerbose<TElement>>;
|
|
530
|
+
|
|
531
|
+
type FormListFlagSetter<TElement extends SignalForm> = Setter<boolean | ReadonlyArray<undefined | GetSignalFormFlagSetter<TElement>>, [
|
|
532
|
+
FormListFlagVerbose<TElement>
|
|
533
|
+
]>;
|
|
534
|
+
|
|
535
|
+
type FormListInput<TElement extends SignalForm> = ReadonlyArray<GetSignalFormInput<TElement>>;
|
|
536
|
+
|
|
537
|
+
type FormListInputSetter<TElement extends SignalForm> = Setter<ReadonlyArray<undefined | GetSignalFormInputSetter<TElement>>, [
|
|
538
|
+
FormListInput<TElement>,
|
|
539
|
+
FormListInput<TElement>
|
|
540
|
+
]>;
|
|
541
|
+
|
|
542
|
+
type FormListValidateOnVerbose<TElement extends SignalForm> = ReadonlyArray<GetSignalFormValidateOnVerbose<TElement>>;
|
|
543
|
+
|
|
544
|
+
type FormListValidateOnSetter<TElement extends SignalForm> = Setter<ValidateStrategy | ReadonlyArray<undefined | GetSignalFormValidateOnSetter<TElement>>, [
|
|
545
|
+
FormListValidateOnVerbose<TElement>
|
|
546
|
+
]>;
|
|
547
|
+
|
|
548
|
+
type FormListError<TElement extends SignalForm> = null | ReadonlyArray<GetSignalFormError<TElement>>;
|
|
549
|
+
|
|
550
|
+
type FormListFlag<TElement extends SignalForm> = boolean | ReadonlyArray<GetSignalFormFlag<TElement>>;
|
|
551
|
+
|
|
552
|
+
type FormListOutput<TElement extends SignalForm> = ReadonlyArray<GetSignalFormOutput<TElement>>;
|
|
553
|
+
|
|
554
|
+
type FormListOutputVerbose<TElement extends SignalForm> = ReadonlyArray<GetSignalFormOutputVerbose<TElement>>;
|
|
555
|
+
|
|
556
|
+
type FormListValidateOn<TElement extends SignalForm> = ValidateStrategy | ReadonlyArray<GetSignalFormValidateOn<TElement>>;
|
|
557
|
+
|
|
558
|
+
interface FormListParams<TElement extends SignalForm> extends SignalFormParams {
|
|
559
|
+
"input.schema": FormListInput<TElement>;
|
|
560
|
+
"input.setter": FormListInputSetter<TElement>;
|
|
561
|
+
"output.schema": FormListOutput<TElement>;
|
|
562
|
+
"output.schema.verbose": FormListOutputVerbose<TElement>;
|
|
563
|
+
"flag.setter": FormListFlagSetter<TElement>;
|
|
564
|
+
"flag.schema": FormListFlag<TElement>;
|
|
565
|
+
"flag.schema.verbose": FormListFlagVerbose<TElement>;
|
|
566
|
+
"validateOn.setter": FormListValidateOnSetter<TElement>;
|
|
567
|
+
"validateOn.schema": FormListValidateOn<TElement>;
|
|
568
|
+
"validateOn.schema.verbose": FormListValidateOnVerbose<TElement>;
|
|
569
|
+
"error.setter": FormListErrorSetter<TElement>;
|
|
570
|
+
"error.schema": FormListError<TElement>;
|
|
571
|
+
"error.schema.verbose": FormListErrorVerbose<TElement>;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
declare class FormListState<TElement extends SignalForm = SignalForm> extends SignalFormState<FormListParams<TElement>> {
|
|
575
|
+
readonly _host: Lazy<FormList$1<TElement>>;
|
|
576
|
+
readonly _elements: Signal<ReadonlyArray<SignalFormState<GetSignalFormParams<TElement>>>>;
|
|
577
|
+
private readonly _initialElements;
|
|
578
|
+
constructor(parent: null | SignalFormState, elements: ReadonlyArray<SignalFormState<GetSignalFormParams<TElement>>>);
|
|
579
|
+
_childOf(parent: null | SignalFormState): FormListState<TElement>;
|
|
580
|
+
_getElements(monitor: Monitor): ReadonlyArray<TElement>;
|
|
581
|
+
_getInitialElements(monitor: Monitor): ReadonlyArray<SignalFormState<GetSignalFormParams<TElement>>>;
|
|
582
|
+
readonly _initial: _owanturist_signal.ReadonlySignal<FormListInput<TElement>>;
|
|
583
|
+
_replaceInitial(monitor: Monitor, state: undefined | FormListState<TElement>, isMounting: boolean): void;
|
|
584
|
+
_setInitial(monitor: Monitor, setter: FormListInputSetter<TElement>): void;
|
|
585
|
+
readonly _input: _owanturist_signal.ReadonlySignal<FormListInput<TElement>>;
|
|
586
|
+
_setInput(monitor: Monitor, setter: FormListInputSetter<TElement>): void;
|
|
587
|
+
readonly _error: _owanturist_signal.ReadonlySignal<FormListError<TElement>>;
|
|
588
|
+
readonly _errorVerbose: _owanturist_signal.ReadonlySignal<FormListErrorVerbose<TElement>>;
|
|
589
|
+
_setError(monitor: Monitor, setter: FormListErrorSetter<TElement>): void;
|
|
590
|
+
readonly _validateOn: _owanturist_signal.ReadonlySignal<FormListValidateOn<TElement>>;
|
|
591
|
+
readonly _validateOnVerbose: _owanturist_signal.ReadonlySignal<FormListValidateOnVerbose<TElement>>;
|
|
592
|
+
_setValidateOn(monitor: Monitor, setter: FormListValidateOnSetter<TElement>): void;
|
|
593
|
+
readonly _touched: _owanturist_signal.ReadonlySignal<FormListFlag<TElement>>;
|
|
594
|
+
readonly _touchedVerbose: _owanturist_signal.ReadonlySignal<FormListFlagVerbose<TElement>>;
|
|
595
|
+
_setTouched(monitor: Monitor, setter: FormListFlagSetter<TElement>): void;
|
|
596
|
+
readonly _output: _owanturist_signal.ReadonlySignal<FormListOutput<TElement> | null>;
|
|
597
|
+
readonly _outputVerbose: _owanturist_signal.ReadonlySignal<FormListOutputVerbose<TElement>>;
|
|
598
|
+
readonly _valid: _owanturist_signal.ReadonlySignal<FormListFlag<TElement>>;
|
|
599
|
+
readonly _validVerbose: _owanturist_signal.ReadonlySignal<FormListFlagVerbose<TElement>>;
|
|
600
|
+
readonly _invalid: _owanturist_signal.ReadonlySignal<FormListFlag<TElement>>;
|
|
601
|
+
readonly _invalidVerbose: _owanturist_signal.ReadonlySignal<FormListFlagVerbose<TElement>>;
|
|
602
|
+
readonly _validated: _owanturist_signal.ReadonlySignal<FormListFlag<TElement>>;
|
|
603
|
+
readonly _validatedVerbose: _owanturist_signal.ReadonlySignal<FormListFlagVerbose<TElement>>;
|
|
604
|
+
_forceValidated(monitor: Monitor): void;
|
|
605
|
+
readonly _dirty: _owanturist_signal.ReadonlySignal<FormListFlag<TElement>>;
|
|
606
|
+
readonly _dirtyVerbose: _owanturist_signal.ReadonlySignal<FormListFlagVerbose<TElement>>;
|
|
607
|
+
readonly _dirtyOn: _owanturist_signal.ReadonlySignal<FormListFlag<TElement>>;
|
|
608
|
+
readonly _dirtyOnVerbose: _owanturist_signal.ReadonlySignal<FormListFlagVerbose<TElement>>;
|
|
609
|
+
_reset(monitor: Monitor, resetter: undefined | FormListInputSetter<TElement>): void;
|
|
610
|
+
_getChildren<TChildParams extends SignalFormParams>(monitor: Monitor): ReadonlyArray<SignalFormChild<TChildParams, FormListParams<TElement>>>;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
declare class FormList$1<TElement extends SignalForm> extends SignalForm<FormListParams<TElement>> {
|
|
614
|
+
readonly _state: FormListState<TElement>;
|
|
615
|
+
static _getState: typeof SignalForm._getState;
|
|
616
|
+
private readonly _elements;
|
|
617
|
+
constructor(_state: FormListState<TElement>);
|
|
618
|
+
getElements(monitor: Monitor): ReadonlyArray<TElement>;
|
|
619
|
+
getElements<TResult>(monitor: Monitor, select: (elements: ReadonlyArray<TElement>) => TResult): TResult;
|
|
620
|
+
setElements(setter: Setter<ReadonlyArray<TElement>, [ReadonlyArray<TElement>, Monitor]>): void;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
interface FormListOptions<TElement extends SignalForm> {
|
|
624
|
+
readonly input?: FormListInputSetter<TElement>;
|
|
625
|
+
readonly initial?: FormListInputSetter<TElement>;
|
|
626
|
+
readonly touched?: FormListFlagSetter<TElement>;
|
|
627
|
+
readonly validateOn?: FormListValidateOnSetter<TElement>;
|
|
628
|
+
readonly error?: FormListErrorSetter<TElement>;
|
|
629
|
+
}
|
|
630
|
+
type FormList<TElement extends SignalForm> = FormList$1<TElement>;
|
|
631
|
+
declare function FormList<TElement extends SignalForm>(elements: ReadonlyArray<TElement>, { input, initial, touched, validateOn, error }?: FormListOptions<TElement>): FormList<TElement>;
|
|
632
|
+
|
|
633
|
+
declare function isFormList(value: unknown): value is FormList$1<SignalForm>;
|
|
634
|
+
|
|
635
|
+
type IsEqualType<TLeft, TRight> = [TLeft, TRight] extends [TRight, TLeft] ? true : false;
|
|
636
|
+
|
|
637
|
+
interface FormOptionalSchema<TEnabled, TElement> {
|
|
638
|
+
readonly enabled: TEnabled;
|
|
639
|
+
readonly element: TElement;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
type FormOptionalParam<TEnabled extends SignalForm, TElement extends SignalForm, TKey extends keyof SignalFormParams, TConcise = never> = TConcise | FormOptionalSchema<TConcise | GetSignalFormParam<TEnabled, TKey>, TConcise | GetSignalFormParam<TElement, TKey>>;
|
|
643
|
+
|
|
644
|
+
type FormOptionalErrorVerbose<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptionalParam<TEnabled, TElement, "error.schema.verbose">;
|
|
645
|
+
|
|
646
|
+
type FormOptionalErrorSetter<TEnabled extends SignalForm, TElement extends SignalForm> = Setter<null | Partial<FormOptionalSchema<GetSignalFormParam<TEnabled, "error.setter">, GetSignalFormParam<TElement, "error.setter">>>, [
|
|
647
|
+
FormOptionalErrorVerbose<TEnabled, TElement>
|
|
648
|
+
]>;
|
|
649
|
+
|
|
650
|
+
type FormOptionalFlagVerbose<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptionalParam<TEnabled, TElement, "flag.schema.verbose">;
|
|
651
|
+
|
|
652
|
+
type FormOptionalFlagSetter<TEnabled extends SignalForm, TElement extends SignalForm> = Setter<boolean | Partial<FormOptionalSchema<GetSignalFormParam<TEnabled, "flag.setter">, GetSignalFormParam<TElement, "flag.setter">>>, [
|
|
653
|
+
FormOptionalFlagVerbose<TEnabled, TElement>
|
|
654
|
+
]>;
|
|
655
|
+
|
|
656
|
+
type FormOptionalInput<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptionalSchema<GetSignalFormParam<TEnabled, "input.schema">, GetSignalFormParam<TElement, "input.schema">>;
|
|
657
|
+
|
|
658
|
+
type FormOptionalInputSetter<TEnabled extends SignalForm, TElement extends SignalForm> = Setter<Partial<FormOptionalSchema<GetSignalFormParam<TEnabled, "input.setter">, GetSignalFormParam<TElement, "input.setter">>>, [
|
|
659
|
+
FormOptionalInput<TEnabled, TElement>,
|
|
660
|
+
FormOptionalInput<TEnabled, TElement>
|
|
661
|
+
]>;
|
|
662
|
+
|
|
663
|
+
type FormOptionalValidateOnVerbose<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptionalParam<TEnabled, TElement, "validateOn.schema.verbose">;
|
|
664
|
+
|
|
665
|
+
type FormOptionalValidateOnSetter<TEnabled extends SignalForm, TElement extends SignalForm> = Setter<ValidateStrategy | Partial<FormOptionalSchema<GetSignalFormParam<TEnabled, "validateOn.setter">, GetSignalFormParam<TElement, "validateOn.setter">>>, [
|
|
666
|
+
FormOptionalValidateOnVerbose<TEnabled, TElement>
|
|
667
|
+
]>;
|
|
668
|
+
|
|
669
|
+
type FormOptionalError<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptionalParam<TEnabled, TElement, "error.schema", null>;
|
|
670
|
+
|
|
671
|
+
type FormOptionalFlag<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptionalParam<TEnabled, TElement, "flag.schema", boolean>;
|
|
672
|
+
|
|
673
|
+
type FormOptionalOutput<TElement extends SignalForm> = undefined | GetSignalFormParam<TElement, "output.schema">;
|
|
674
|
+
|
|
675
|
+
type FormOptionalOutputVerbose<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptionalParam<TEnabled, TElement, "output.schema.verbose">;
|
|
676
|
+
|
|
677
|
+
type FormOptionalValidateOn<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptionalParam<TEnabled, TElement, "validateOn.schema", ValidateStrategy>;
|
|
678
|
+
|
|
679
|
+
interface FormOptionalParams<TEnabled extends SignalForm, TElement extends SignalForm> extends SignalFormParams {
|
|
680
|
+
"input.schema": FormOptionalInput<TEnabled, TElement>;
|
|
681
|
+
"input.setter": FormOptionalInputSetter<TEnabled, TElement>;
|
|
682
|
+
"output.schema": FormOptionalOutput<TElement>;
|
|
683
|
+
"output.schema.verbose": FormOptionalOutputVerbose<TEnabled, TElement>;
|
|
684
|
+
"flag.setter": FormOptionalFlagSetter<TEnabled, TElement>;
|
|
685
|
+
"flag.schema": FormOptionalFlag<TEnabled, TElement>;
|
|
686
|
+
"flag.schema.verbose": FormOptionalFlagVerbose<TEnabled, TElement>;
|
|
687
|
+
"validateOn.setter": FormOptionalValidateOnSetter<TEnabled, TElement>;
|
|
688
|
+
"validateOn.schema": FormOptionalValidateOn<TEnabled, TElement>;
|
|
689
|
+
"validateOn.schema.verbose": FormOptionalValidateOnVerbose<TEnabled, TElement>;
|
|
690
|
+
"error.setter": FormOptionalErrorSetter<TEnabled, TElement>;
|
|
691
|
+
"error.schema": FormOptionalError<TEnabled, TElement>;
|
|
692
|
+
"error.schema.verbose": FormOptionalErrorVerbose<TEnabled, TElement>;
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
declare class FormOptionalState<TEnabled extends SignalForm, TElement extends SignalForm> extends SignalFormState<FormOptionalParams<TEnabled, TElement>> {
|
|
696
|
+
readonly _host: Lazy<FormOptional$1<TEnabled, TElement>>;
|
|
697
|
+
readonly _enabled: SignalFormState<GetSignalFormParams<TEnabled>>;
|
|
698
|
+
readonly _element: SignalFormState<GetSignalFormParams<TElement>>;
|
|
699
|
+
constructor(parent: null | SignalFormState, enabled: SignalFormState<GetSignalFormParams<TEnabled>>, element: SignalFormState<GetSignalFormParams<TElement>>);
|
|
700
|
+
private _isEnabled;
|
|
701
|
+
_getEnabledElement(monitor: Monitor): undefined | SignalFormState<GetSignalFormParams<TElement>>;
|
|
702
|
+
_childOf(parent: null | SignalFormState): FormOptionalState<TEnabled, TElement>;
|
|
703
|
+
private _toConcise;
|
|
704
|
+
private _toVerbose;
|
|
705
|
+
readonly _initial: _owanturist_signal.ReadonlySignal<FormOptionalInput<TEnabled, TElement>>;
|
|
706
|
+
_setInitial(monitor: Monitor, setter: FormOptionalInputSetter<TEnabled, TElement>): void;
|
|
707
|
+
_replaceInitial(monitor: Monitor, state: undefined | FormOptionalState<TEnabled, TElement>, isMounting: boolean): void;
|
|
708
|
+
readonly _input: _owanturist_signal.ReadonlySignal<FormOptionalInput<TEnabled, TElement>>;
|
|
709
|
+
_setInput(monitor: Monitor, setter: FormOptionalInputSetter<TEnabled, TElement>): void;
|
|
710
|
+
readonly _error: _owanturist_signal.ReadonlySignal<FormOptionalError<TEnabled, TElement>>;
|
|
711
|
+
readonly _errorVerbose: _owanturist_signal.ReadonlySignal<FormOptionalErrorVerbose<TEnabled, TElement>>;
|
|
712
|
+
_setError(monitor: Monitor, setter: FormOptionalErrorSetter<TEnabled, TElement>): void;
|
|
713
|
+
readonly _validateOn: _owanturist_signal.ReadonlySignal<FormOptionalValidateOn<TEnabled, TElement>>;
|
|
714
|
+
readonly _validateOnVerbose: _owanturist_signal.ReadonlySignal<FormOptionalValidateOnVerbose<TEnabled, TElement>>;
|
|
715
|
+
_setValidateOn(monitor: Monitor, setter: FormOptionalValidateOnSetter<TEnabled, TElement>): void;
|
|
716
|
+
readonly _touched: _owanturist_signal.ReadonlySignal<FormOptionalFlag<TEnabled, TElement>>;
|
|
717
|
+
readonly _touchedVerbose: _owanturist_signal.ReadonlySignal<FormOptionalFlagVerbose<TEnabled, TElement>>;
|
|
718
|
+
_setTouched(monitor: Monitor, setter: FormOptionalFlagSetter<TEnabled, TElement>): void;
|
|
719
|
+
readonly _output: _owanturist_signal.ReadonlySignal<FormOptionalOutput<TElement> | null>;
|
|
720
|
+
readonly _outputVerbose: _owanturist_signal.ReadonlySignal<FormOptionalOutputVerbose<TEnabled, TElement>>;
|
|
721
|
+
readonly _valid: _owanturist_signal.ReadonlySignal<FormOptionalFlag<TEnabled, TElement>>;
|
|
722
|
+
readonly _validVerbose: _owanturist_signal.ReadonlySignal<FormOptionalFlagVerbose<TEnabled, TElement>>;
|
|
723
|
+
readonly _invalid: _owanturist_signal.ReadonlySignal<FormOptionalFlag<TEnabled, TElement>>;
|
|
724
|
+
readonly _invalidVerbose: _owanturist_signal.ReadonlySignal<FormOptionalFlagVerbose<TEnabled, TElement>>;
|
|
725
|
+
readonly _validated: _owanturist_signal.ReadonlySignal<FormOptionalFlag<TEnabled, TElement>>;
|
|
726
|
+
readonly _validatedVerbose: _owanturist_signal.ReadonlySignal<FormOptionalFlagVerbose<TEnabled, TElement>>;
|
|
727
|
+
_forceValidated(monitor: Monitor): void;
|
|
728
|
+
readonly _dirty: _owanturist_signal.ReadonlySignal<FormOptionalFlag<TEnabled, TElement>>;
|
|
729
|
+
readonly _dirtyVerbose: _owanturist_signal.ReadonlySignal<FormOptionalFlagVerbose<TEnabled, TElement>>;
|
|
730
|
+
readonly _dirtyOn: _owanturist_signal.ReadonlySignal<FormOptionalFlag<TEnabled, TElement>>;
|
|
731
|
+
readonly _dirtyOnVerbose: _owanturist_signal.ReadonlySignal<FormOptionalFlagVerbose<TEnabled, TElement>>;
|
|
732
|
+
_reset(monitor: Monitor, resetter: undefined | FormOptionalInputSetter<TEnabled, TElement>): void;
|
|
733
|
+
_getChildren<TChildParams extends SignalFormParams>(monitor: Monitor): ReadonlyArray<SignalFormChild<TChildParams, FormOptionalParams<TEnabled, TElement>>>;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
declare class FormOptional$1<TEnabled extends SignalForm, TElement extends SignalForm> extends SignalForm<FormOptionalParams<TEnabled, TElement>> {
|
|
737
|
+
readonly _state: FormOptionalState<TEnabled, TElement>;
|
|
738
|
+
static _getState: typeof SignalForm._getState;
|
|
739
|
+
readonly enabled: TEnabled;
|
|
740
|
+
readonly element: TElement;
|
|
741
|
+
constructor(_state: FormOptionalState<TEnabled, TElement>);
|
|
742
|
+
getEnabledElement(monitor: Monitor): undefined | TElement;
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
interface FormOptionalOptions<TEnabled extends SignalForm, TElement extends SignalForm> {
|
|
746
|
+
input?: FormOptionalInputSetter<TEnabled, TElement>;
|
|
747
|
+
initial?: FormOptionalInputSetter<TEnabled, TElement>;
|
|
748
|
+
touched?: FormOptionalFlagSetter<TEnabled, TElement>;
|
|
749
|
+
validateOn?: FormOptionalValidateOnSetter<TEnabled, TElement>;
|
|
750
|
+
error?: FormOptionalErrorSetter<TEnabled, TElement>;
|
|
751
|
+
}
|
|
752
|
+
type FormOptional<TEnabled extends SignalForm, TElement extends SignalForm> = FormOptional$1<TEnabled, TElement>;
|
|
753
|
+
declare function FormOptional<TEnabled extends SignalForm, TElement extends SignalForm>(enabled: IsEqualType<GetSignalFormParam<TEnabled, "output.schema">, boolean> extends true ? TEnabled : never, element: TElement, { input, initial, touched, validateOn, error }?: FormOptionalOptions<TEnabled, TElement>): FormOptional<TEnabled, TElement>;
|
|
754
|
+
|
|
755
|
+
declare function isFormOptional(anything: unknown): anything is FormOptional$1<SignalForm, SignalForm>;
|
|
756
|
+
|
|
757
|
+
type FormSwitchBranches<TKind extends SignalForm> = GetSignalFormParam<TKind, "output.schema"> extends string ? Record<GetSignalFormParam<TKind, "output.schema">, SignalForm> : never;
|
|
758
|
+
|
|
759
|
+
interface FormSwitchConciseSchema<TActive, TBranch> {
|
|
760
|
+
readonly active: TActive;
|
|
761
|
+
readonly branch: TBranch;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
interface FormSwitchVerboseSchema<TActive, TBranches> {
|
|
765
|
+
readonly active: TActive;
|
|
766
|
+
readonly branches: TBranches;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
type GetFormSwitchBranchesParam<TBranches extends FormSwitchBranches<SignalForm>, TKey extends keyof SignalFormParams> = Compute<{
|
|
770
|
+
readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], TKey>;
|
|
771
|
+
}>;
|
|
772
|
+
|
|
773
|
+
type FormSwitchVerboseParam<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>, TKey extends keyof SignalFormParams> = Compute<FormSwitchVerboseSchema<GetSignalFormParam<TKind, TKey>, GetFormSwitchBranchesParam<TBranches, TKey>>>;
|
|
774
|
+
|
|
775
|
+
type FormSwitchErrorVerbose<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitchVerboseParam<TKind, TBranches, "error.schema.verbose">;
|
|
776
|
+
|
|
777
|
+
interface FormSwitchBranch<TKind, TValue> {
|
|
778
|
+
readonly kind: TKind;
|
|
779
|
+
readonly value: TValue;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
type FormSwitchBranchUnion<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>, TKey extends keyof SignalFormParams> = {
|
|
783
|
+
[TBranch in GetSignalFormOutput<TKind>]: FormSwitchBranch<TBranch, GetSignalFormParam<TBranches[TBranch], TKey>>;
|
|
784
|
+
}[GetSignalFormOutput<TKind>];
|
|
785
|
+
|
|
786
|
+
type FormSwitchErrorSetter<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = Setter<null | Partial<FormSwitchConciseSchema<GetSignalFormParam<TKind, "error.setter">, Setter<null | FormSwitchBranchUnion<TKind, TBranches, "error.setter">, [
|
|
787
|
+
FormSwitchBranchUnion<TKind, TBranches, "error.schema.verbose">
|
|
788
|
+
]>>> | Partial<FormSwitchVerboseSchema<GetSignalFormParam<TKind, "error.setter">, Setter<null | Partial<GetFormSwitchBranchesParam<TBranches, "error.setter">>, [
|
|
789
|
+
GetFormSwitchBranchesParam<TBranches, "error.schema.verbose">
|
|
790
|
+
]>>>, [
|
|
791
|
+
FormSwitchErrorVerbose<TKind, TBranches>
|
|
792
|
+
]>;
|
|
793
|
+
|
|
794
|
+
type FormSwitchFlagVerbose<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitchVerboseParam<TKind, TBranches, "flag.schema.verbose">;
|
|
795
|
+
|
|
796
|
+
type FormSwitchFlagSetter<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = Setter<boolean | Partial<FormSwitchConciseSchema<GetSignalFormParam<TKind, "flag.setter">, Setter<boolean | FormSwitchBranchUnion<TKind, TBranches, "flag.setter">, [
|
|
797
|
+
FormSwitchBranchUnion<TKind, TBranches, "flag.schema.verbose">
|
|
798
|
+
]>>> | Partial<FormSwitchVerboseSchema<GetSignalFormParam<TKind, "flag.setter">, Setter<boolean | Partial<GetFormSwitchBranchesParam<TBranches, "flag.setter">>, [
|
|
799
|
+
GetFormSwitchBranchesParam<TBranches, "flag.schema.verbose">
|
|
800
|
+
]>>>, [
|
|
801
|
+
FormSwitchFlagVerbose<TKind, TBranches>
|
|
802
|
+
]>;
|
|
803
|
+
|
|
804
|
+
type FormSwitchInput<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitchVerboseParam<TKind, TBranches, "input.schema">;
|
|
805
|
+
|
|
806
|
+
type FormSwitchInputSetter<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = Setter<Partial<FormSwitchVerboseSchema<GetSignalFormParam<TKind, "input.setter">, Setter<Partial<GetFormSwitchBranchesParam<TBranches, "input.setter">>, [
|
|
807
|
+
GetFormSwitchBranchesParam<TBranches, "input.schema">,
|
|
808
|
+
GetFormSwitchBranchesParam<TBranches, "input.schema">
|
|
809
|
+
]>>>, [
|
|
810
|
+
FormSwitchInput<TKind, TBranches>,
|
|
811
|
+
FormSwitchInput<TKind, TBranches>
|
|
812
|
+
]>;
|
|
813
|
+
|
|
814
|
+
type FormSwitchValidateOnVerbose<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitchVerboseParam<TKind, TBranches, "validateOn.schema.verbose">;
|
|
815
|
+
|
|
816
|
+
type FormSwitchValidateOnSetter<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = Setter<ValidateStrategy | Partial<FormSwitchConciseSchema<GetSignalFormParam<TKind, "validateOn.setter">, Setter<ValidateStrategy | FormSwitchBranchUnion<TKind, TBranches, "validateOn.setter">, [
|
|
817
|
+
FormSwitchBranchUnion<TKind, TBranches, "validateOn.schema.verbose">
|
|
818
|
+
]>>> | Partial<FormSwitchVerboseSchema<GetSignalFormParam<TKind, "validateOn.setter">, Setter<ValidateStrategy | Partial<GetFormSwitchBranchesParam<TBranches, "validateOn.setter">>, [
|
|
819
|
+
GetFormSwitchBranchesParam<TBranches, "validateOn.schema.verbose">
|
|
820
|
+
]>>>, [
|
|
821
|
+
FormSwitchValidateOnVerbose<TKind, TBranches>
|
|
822
|
+
]>;
|
|
823
|
+
|
|
824
|
+
type FormSwitchActiveBranch<TBranches extends FormSwitchBranches<SignalForm>> = {
|
|
825
|
+
[TBranch in keyof TBranches]: FormSwitchBranch<TBranch, TBranches[TBranch]>;
|
|
826
|
+
}[keyof TBranches];
|
|
827
|
+
|
|
828
|
+
type FormSwitchConciseParam<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>, TKey extends keyof SignalFormParams, TConcise> = TConcise | FormSwitchConciseSchema<TConcise | GetSignalFormParam<TKind, TKey>, TConcise | FormSwitchBranchUnion<TKind, TBranches, TKey>>;
|
|
829
|
+
|
|
830
|
+
type FormSwitchError<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitchConciseParam<TKind, TBranches, "error.schema", null>;
|
|
831
|
+
|
|
832
|
+
type FormSwitchFlag<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitchConciseParam<TKind, TBranches, "flag.schema", boolean>;
|
|
833
|
+
|
|
834
|
+
type FormSwitchOutput<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitchBranchUnion<TKind, TBranches, "output.schema">;
|
|
835
|
+
|
|
836
|
+
type FormSwitchOutputVerbose<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitchVerboseParam<TKind, TBranches, "output.schema.verbose">;
|
|
837
|
+
|
|
838
|
+
type FormSwitchValidateOn<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitchConciseParam<TKind, TBranches, "validateOn.schema", ValidateStrategy>;
|
|
839
|
+
|
|
840
|
+
interface FormSwitchParams<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> extends SignalFormParams {
|
|
841
|
+
"input.schema": FormSwitchInput<TKind, TBranches>;
|
|
842
|
+
"input.setter": FormSwitchInputSetter<TKind, TBranches>;
|
|
843
|
+
"output.schema": FormSwitchOutput<TKind, TBranches>;
|
|
844
|
+
"output.schema.verbose": FormSwitchOutputVerbose<TKind, TBranches>;
|
|
845
|
+
"flag.setter": FormSwitchFlagSetter<TKind, TBranches>;
|
|
846
|
+
"flag.schema": FormSwitchFlag<TKind, TBranches>;
|
|
847
|
+
"flag.schema.verbose": FormSwitchFlagVerbose<TKind, TBranches>;
|
|
848
|
+
"validateOn.setter": FormSwitchValidateOnSetter<TKind, TBranches>;
|
|
849
|
+
"validateOn.schema": FormSwitchValidateOn<TKind, TBranches>;
|
|
850
|
+
"validateOn.schema.verbose": FormSwitchValidateOnVerbose<TKind, TBranches>;
|
|
851
|
+
"error.setter": FormSwitchErrorSetter<TKind, TBranches>;
|
|
852
|
+
"error.schema": FormSwitchError<TKind, TBranches>;
|
|
853
|
+
"error.schema.verbose": FormSwitchErrorVerbose<TKind, TBranches>;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
type FormSwitchStateBranches<TBranches> = {
|
|
857
|
+
[TBranch in keyof TBranches]: SignalFormState<GetSignalFormParams<TBranches[TBranch]>>;
|
|
858
|
+
};
|
|
859
|
+
type ActiveSwitchStateBranch<TBranches> = FormSwitchBranch<keyof TBranches, FormSwitchStateBranches<TBranches>[keyof TBranches]>;
|
|
860
|
+
declare class FormSwitchState<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> extends SignalFormState<FormSwitchParams<TKind, TBranches>> {
|
|
861
|
+
readonly _host: Lazy<FormSwitch$1<TKind, TBranches>>;
|
|
862
|
+
readonly _active: SignalFormState<GetSignalFormParams<TKind>>;
|
|
863
|
+
readonly _branches: FormSwitchStateBranches<TBranches>;
|
|
864
|
+
constructor(parent: null | SignalFormState, active: SignalFormState<GetSignalFormParams<TKind>>, branches: FormSwitchStateBranches<TBranches>);
|
|
865
|
+
_getActiveBranch(monitor: Monitor): undefined | ActiveSwitchStateBranch<TBranches>;
|
|
866
|
+
private _toConcise;
|
|
867
|
+
private _toVerbose;
|
|
868
|
+
_childOf(parent: null | SignalFormState): FormSwitchState<TKind, TBranches>;
|
|
869
|
+
readonly _initial: _owanturist_signal.ReadonlySignal<{
|
|
870
|
+
readonly active: GetSignalFormParam<TKind, "input.schema">;
|
|
871
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "input.schema">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "input.schema">; }[K]; };
|
|
872
|
+
}>;
|
|
873
|
+
_setInitial(monitor: Monitor, setter: FormSwitchInputSetter<TKind, TBranches>): void;
|
|
874
|
+
_replaceInitial(monitor: Monitor, state: undefined | FormSwitchState<TKind, TBranches>, isMounting: boolean): void;
|
|
875
|
+
readonly _input: _owanturist_signal.ReadonlySignal<{
|
|
876
|
+
readonly active: GetSignalFormParam<TKind, "input.schema">;
|
|
877
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "input.schema">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "input.schema">; }[K]; };
|
|
878
|
+
}>;
|
|
879
|
+
_setInput(monitor: Monitor, setter: FormSwitchInputSetter<TKind, TBranches>): void;
|
|
880
|
+
readonly _error: _owanturist_signal.ReadonlySignal<FormSwitchError<TKind, TBranches>>;
|
|
881
|
+
readonly _errorVerbose: _owanturist_signal.ReadonlySignal<{
|
|
882
|
+
readonly active: GetSignalFormParam<TKind, "error.schema.verbose">;
|
|
883
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "error.schema.verbose">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "error.schema.verbose">; }[K]; };
|
|
884
|
+
}>;
|
|
885
|
+
_setError(monitor: Monitor, setter: FormSwitchErrorSetter<TKind, TBranches>): void;
|
|
886
|
+
readonly _validateOn: _owanturist_signal.ReadonlySignal<FormSwitchValidateOn<TKind, TBranches>>;
|
|
887
|
+
readonly _validateOnVerbose: _owanturist_signal.ReadonlySignal<{
|
|
888
|
+
readonly active: GetSignalFormParam<TKind, "validateOn.schema.verbose">;
|
|
889
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "validateOn.schema.verbose">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "validateOn.schema.verbose">; }[K]; };
|
|
890
|
+
}>;
|
|
891
|
+
_setValidateOn(monitor: Monitor, setter: FormSwitchValidateOnSetter<TKind, TBranches>): void;
|
|
892
|
+
readonly _touched: _owanturist_signal.ReadonlySignal<FormSwitchFlag<TKind, TBranches>>;
|
|
893
|
+
readonly _touchedVerbose: _owanturist_signal.ReadonlySignal<{
|
|
894
|
+
readonly active: GetSignalFormParam<TKind, "flag.schema.verbose">;
|
|
895
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }[K]; };
|
|
896
|
+
}>;
|
|
897
|
+
_setTouched(monitor: Monitor, setter: FormSwitchFlagSetter<TKind, TBranches>): void;
|
|
898
|
+
readonly _output: _owanturist_signal.ReadonlySignal<FormSwitchOutput<TKind, TBranches> | null>;
|
|
899
|
+
readonly _outputVerbose: _owanturist_signal.ReadonlySignal<{
|
|
900
|
+
readonly active: GetSignalFormParam<TKind, "output.schema.verbose">;
|
|
901
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "output.schema.verbose">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "output.schema.verbose">; }[K]; };
|
|
902
|
+
}>;
|
|
903
|
+
readonly _valid: _owanturist_signal.ReadonlySignal<FormSwitchFlag<TKind, TBranches>>;
|
|
904
|
+
readonly _validVerbose: _owanturist_signal.ReadonlySignal<{
|
|
905
|
+
readonly active: GetSignalFormParam<TKind, "flag.schema.verbose">;
|
|
906
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }[K]; };
|
|
907
|
+
}>;
|
|
908
|
+
readonly _invalid: _owanturist_signal.ReadonlySignal<FormSwitchFlag<TKind, TBranches>>;
|
|
909
|
+
readonly _invalidVerbose: _owanturist_signal.ReadonlySignal<{
|
|
910
|
+
readonly active: GetSignalFormParam<TKind, "flag.schema.verbose">;
|
|
911
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }[K]; };
|
|
912
|
+
}>;
|
|
913
|
+
readonly _validated: _owanturist_signal.ReadonlySignal<FormSwitchFlag<TKind, TBranches>>;
|
|
914
|
+
readonly _validatedVerbose: _owanturist_signal.ReadonlySignal<{
|
|
915
|
+
readonly active: GetSignalFormParam<TKind, "flag.schema.verbose">;
|
|
916
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }[K]; };
|
|
917
|
+
}>;
|
|
918
|
+
_forceValidated(monitor: Monitor): void;
|
|
919
|
+
readonly _dirty: _owanturist_signal.ReadonlySignal<FormSwitchFlag<TKind, TBranches>>;
|
|
920
|
+
readonly _dirtyVerbose: _owanturist_signal.ReadonlySignal<{
|
|
921
|
+
readonly active: GetSignalFormParam<TKind, "flag.schema.verbose">;
|
|
922
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }[K]; };
|
|
923
|
+
}>;
|
|
924
|
+
readonly _dirtyOn: _owanturist_signal.ReadonlySignal<FormSwitchFlag<TKind, TBranches>>;
|
|
925
|
+
readonly _dirtyOnVerbose: _owanturist_signal.ReadonlySignal<{
|
|
926
|
+
readonly active: GetSignalFormParam<TKind, "flag.schema.verbose">;
|
|
927
|
+
readonly branches: { [K in keyof { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }]: { readonly [TBranch in keyof TBranches]: GetSignalFormParam<TBranches[TBranch], "flag.schema.verbose">; }[K]; };
|
|
928
|
+
}>;
|
|
929
|
+
_reset(monitor: Monitor, resetter: undefined | FormSwitchInputSetter<TKind, TBranches>): void;
|
|
930
|
+
_getChildren<TChildParams extends SignalFormParams>(monitor: Monitor): ReadonlyArray<SignalFormChild<TChildParams, FormSwitchParams<TKind, TBranches>>>;
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
declare class FormSwitch$1<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> extends SignalForm<FormSwitchParams<TKind, TBranches>> {
|
|
934
|
+
readonly _state: FormSwitchState<TKind, TBranches>;
|
|
935
|
+
static _getState: typeof SignalForm._getState;
|
|
936
|
+
readonly active: TKind;
|
|
937
|
+
readonly branches: Readonly<TBranches>;
|
|
938
|
+
constructor(_state: FormSwitchState<TKind, TBranches>);
|
|
939
|
+
getActiveBranch(monitor: Monitor): undefined | FormSwitchActiveBranch<TBranches>;
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
interface FormSwitchOptions<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> {
|
|
943
|
+
input?: FormSwitchInputSetter<TKind, TBranches>;
|
|
944
|
+
initial?: FormSwitchInputSetter<TKind, TBranches>;
|
|
945
|
+
touched?: FormSwitchFlagSetter<TKind, TBranches>;
|
|
946
|
+
validateOn?: FormSwitchValidateOnSetter<TKind, TBranches>;
|
|
947
|
+
error?: FormSwitchErrorSetter<TKind, TBranches>;
|
|
948
|
+
}
|
|
949
|
+
type FormSwitch<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>> = FormSwitch$1<TKind, TBranches>;
|
|
950
|
+
declare function FormSwitch<TKind extends SignalForm, TBranches extends FormSwitchBranches<TKind>>(active: TKind, branches: IsEqualType<GetSignalFormParam<TKind, "output.schema">, keyof TBranches> extends true ? TBranches : never, { input, initial, touched, validateOn, error }?: FormSwitchOptions<TKind, TBranches>): FormSwitch<TKind, TBranches>;
|
|
951
|
+
|
|
952
|
+
declare function isFormSwitch(anything: unknown): anything is FormSwitch$1<SignalForm, FormSwitchBranches<SignalForm>>;
|
|
953
|
+
|
|
954
|
+
export { FormList, type FormListError, type FormListErrorSetter, type FormListErrorVerbose, type FormListFlag, type FormListFlagSetter, type FormListFlagVerbose, type FormListInput, type FormListInputSetter, type FormListOptions, type FormListOutput, type FormListOutputVerbose, type FormListParams, type FormListValidateOn, type FormListValidateOnSetter, type FormListValidateOnVerbose, type FormMeta, FormOptional, type FormOptionalError, type FormOptionalErrorSetter, type FormOptionalErrorVerbose, type FormOptionalFlag, type FormOptionalFlagSetter, type FormOptionalFlagVerbose, type FormOptionalInput, type FormOptionalInputSetter, type FormOptionalOptions, type FormOptionalOutput, type FormOptionalOutputVerbose, type FormOptionalParams, type FormOptionalSchema, type FormOptionalValidateOn, type FormOptionalValidateOnSetter, type FormOptionalValidateOnVerbose, FormShape, type FormShapeError, type FormShapeErrorSetter, type FormShapeErrorVerbose, type FormShapeFields, type FormShapeFlag, type FormShapeFlagSetter, type FormShapeFlagVerbose, type FormShapeInput, type FormShapeInputSetter, type FormShapeOptions, type FormShapeOutput, type FormShapeOutputVerbose, type FormShapeParams, type FormShapeValidateOn, type FormShapeValidateOnSetter, type FormShapeValidateOnVerbose, FormSwitch, type FormSwitchActiveBranch, type FormSwitchBranch, type FormSwitchBranches, type FormSwitchConciseSchema, type FormSwitchError, type FormSwitchErrorSetter, type FormSwitchErrorVerbose, type FormSwitchFlag, type FormSwitchFlagSetter, type FormSwitchFlagVerbose, type FormSwitchInput, type FormSwitchInputSetter, type FormSwitchOptions, type FormSwitchOutput, type FormSwitchOutputVerbose, type FormSwitchParams, type FormSwitchValidateOn, type FormSwitchValidateOnSetter, type FormSwitchValidateOnVerbose, type FormSwitchVerboseSchema, FormUnit, type FormUnitErrorSetter, type FormUnitFlagSetter, type FormUnitInputSetter, type FormUnitOptions, type FormUnitParams, type FormUnitSchemaOptions, type FormUnitTransformedOptions, type FormUnitTransformer, type FormUnitValidateOnSetter, type FormUnitValidatedOptions, type FormUnitValidator, type GetFormShapeParam, type GetFormSwitchBranchesParam, type GetSignalFormError, type GetSignalFormErrorSetter, type GetSignalFormErrorVerbose, type GetSignalFormFlag, type GetSignalFormFlagSetter, type GetSignalFormFlagVerbose, type GetSignalFormInput, type GetSignalFormInputSetter, type GetSignalFormOutput, type GetSignalFormOutputVerbose, type GetSignalFormParam, type GetSignalFormValidateOn, type GetSignalFormValidateOnSetter, type GetSignalFormValidateOnVerbose, type Result, SignalForm, type SignalFormParams, VALIDATE_ON_CHANGE, VALIDATE_ON_INIT, VALIDATE_ON_SUBMIT, VALIDATE_ON_TOUCH, type ValidateStrategy, type ZodLikeError, type ZodLikeIssue, type ZodLikeSafeParseResult, type ZodLikeSchema, isFormList, isFormOptional, isFormShape, isFormSwitch, isFormUnit, isSignalForm, zodLikeParse };
|