Skip to content

Commit 6b764dc

Browse files
committed
[sveltekit] Add updateData option to ValidatedFormData type
1 parent 821f4dc commit 6b764dc

File tree

4 files changed

+14
-3
lines changed

4 files changed

+14
-3
lines changed

.changeset/ripe-tips-invent.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@sjsf/sveltekit": major
3+
---
4+
5+
Add `updateData` option to `ValidatedFormData` type

packages/sveltekit/src/lib/client/form.svelte.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ export function createSvelteKitForm<
7777
if (validationData === undefined || formIdPrefix !== validationData.idPrefix) {
7878
return;
7979
}
80+
if (validationData.updateData) {
81+
form.value = validationData.data;
82+
}
8083
updateErrors(form, validationData.errors);
8184
});
8285
return form;

packages/sveltekit/src/lib/model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export type InitialFormData<T = unknown> = SerializableOptionalFormOptions<T> &
5050
export interface ValidatedFormData {
5151
idPrefix: string;
5252
isValid: boolean;
53+
updateData: boolean;
5354
data: SchemaValue | undefined;
5455
errors: ValidationError[];
5556
}

packages/sveltekit/src/lib/server/server.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export interface FormHandlerOptions extends IdOptions {
4848
createEntryConverter?: Creatable<EntryConverter<FormDataEntryValue>, FormDataConverterOptions>;
4949
convertUnknownEntry?: UnknownEntryConverter;
5050
/** @default false */
51-
sendData?: boolean;
51+
sendData?: boolean | 'withoutClientSideUpdate';
5252
/** By default, handles conversion of `File` */
5353
createReviver?: (formData: FormData) => (key: string, value: any) => any;
5454
}
@@ -73,7 +73,7 @@ export function createFormHandler({
7373
idSeparator = DEFAULT_ID_SEPARATOR,
7474
idIndexSeparator = DEFAULT_INDEX_SEPARATOR,
7575
idPseudoSeparator = DEFAULT_ID_PSEUDO_SEPARATOR,
76-
sendData,
76+
sendData = false,
7777
createReviver = createDefaultReviver
7878
}: FormHandlerOptions) {
7979
const validator: Validator = create(createValidator, {
@@ -123,10 +123,12 @@ export function createFormHandler({
123123
? validator.validateFormValue(schema, data)
124124
: [];
125125
function validated(errors: ValidationError[]) {
126+
const isValid = errors.length === 0
126127
return {
127128
idPrefix: idPrefix as string,
128-
isValid: errors.length === 0,
129+
isValid,
129130
data: sendData ? data : undefined,
131+
updateData: !isValid && (sendData === 'withoutClientSideUpdate' ? false : sendData),
130132
errors
131133
} satisfies ValidatedFormData;
132134
}

0 commit comments

Comments
 (0)