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:
dream-weave
2026-07-24 10:05:27 +08:00
committed by GitHub
parent 0542b509ca
commit dcdbfe5dfc
13 changed files with 195 additions and 86 deletions

View File

@@ -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,