fix(@vben-core/form-ui): restore lock screen form submission (#8195)
* fix(@vben-core/form-ui): avoid stale form context access * fix(@vben/playground): constrain date range codec fields * test(@vben-core/form-ui): harden benchmark fixtures * docs(@vben/docs): document form runtime and benchmarks * fix(@vben/docs): 明确 getValues/submit 返回值及 submit 参数类型
This commit is contained in:
@@ -4,6 +4,18 @@ import dayjs from 'dayjs';
|
||||
|
||||
type DateRange = [Dayjs, Dayjs];
|
||||
|
||||
type OptionalDateRangeField<
|
||||
TFormValues extends Record<string, unknown>,
|
||||
TRangeField extends keyof TFormValues,
|
||||
> =
|
||||
Record<never, never> extends Pick<TFormValues, TRangeField>
|
||||
? [Exclude<TFormValues[TRangeField], undefined>] extends [never]
|
||||
? never
|
||||
: Exclude<TFormValues[TRangeField], undefined> extends DateRange
|
||||
? TRangeField
|
||||
: never
|
||||
: never;
|
||||
|
||||
type DateRangeSubmitValues<
|
||||
TFormValues extends Record<string, unknown>,
|
||||
TRangeField extends keyof TFormValues,
|
||||
@@ -19,7 +31,7 @@ interface DateRangeCodecOptions<
|
||||
TEndField extends string,
|
||||
> {
|
||||
endField: TEndField;
|
||||
rangeField: TRangeField;
|
||||
rangeField: OptionalDateRangeField<TFormValues, TRangeField> & TRangeField;
|
||||
startField: TStartField;
|
||||
}
|
||||
|
||||
@@ -30,11 +42,16 @@ export function createDateRangeCodec<
|
||||
TRangeField extends keyof TFormValues & string,
|
||||
TStartField extends string,
|
||||
TEndField extends string,
|
||||
>({
|
||||
endField,
|
||||
rangeField,
|
||||
startField,
|
||||
}: DateRangeCodecOptions<TFormValues, TRangeField, TStartField, TEndField>) {
|
||||
>(
|
||||
options: DateRangeCodecOptions<
|
||||
TFormValues,
|
||||
TRangeField,
|
||||
TStartField,
|
||||
TEndField
|
||||
>,
|
||||
) {
|
||||
const { endField, startField } = options;
|
||||
const rangeField = options.rangeField as TRangeField;
|
||||
type SubmitValues = DateRangeSubmitValues<
|
||||
TFormValues,
|
||||
TRangeField,
|
||||
|
||||
Reference in New Issue
Block a user