Skip to content

Commit bd9f19a

Browse files
committed
default form actions to url encoded
1 parent 55b5016 commit bd9f19a

2 files changed

Lines changed: 18 additions & 8 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@solidjs/router": minor
3+
---
4+
5+
default form actions to url encoded

src/data/events.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ import type { RouterContext } from "../types.js";
44
import { actions } from "./action.js";
55
import { mockBase } from "../utils.js";
66

7-
export function setupNativeEvents(preload = true, explicitLinks = false, actionBase = "/_server", transformUrl?: (url: string) => string) {
7+
export function setupNativeEvents(
8+
preload = true,
9+
explicitLinks = false,
10+
actionBase = "/_server",
11+
transformUrl?: (url: string) => string
12+
) {
813
return (router: RouterContext) => {
914
const basePath = router.base.path();
1015
const navigateFromRoute = router.navigatorFactory(router.base);
@@ -123,13 +128,13 @@ export function setupNativeEvents(preload = true, explicitLinks = false, actionB
123128
const handler = actions.get(actionRef);
124129
if (handler) {
125130
evt.preventDefault();
126-
const data = new FormData(evt.target as HTMLFormElement);
127-
if (evt.submitter && (evt.submitter as HTMLButtonElement | HTMLInputElement).name)
128-
data.append(
129-
(evt.submitter as HTMLButtonElement | HTMLInputElement).name,
130-
(evt.submitter as HTMLButtonElement | HTMLInputElement).value
131-
);
132-
handler.call({ r: router, f: evt.target }, data);
131+
const data = new FormData(evt.target as HTMLFormElement, evt.submitter);
132+
handler.call(
133+
{ r: router, f: evt.target },
134+
(evt.target as HTMLFormElement).enctype === "multipart/form-data"
135+
? data
136+
: new URLSearchParams(data as any)
137+
);
133138
}
134139
}
135140

0 commit comments

Comments
 (0)