11import type { DjangoFormProps , HttpRequestProps } from "./types" ;
22import { useEffect } from "preact/hooks" ;
3- import { render , createElement } from "preact" ;
3+ import { type ComponentChildren , render , createElement } from "preact" ;
44/**
55 * Interface used to bind a ReactPy node to React.
66 */
7- export function bind ( node ) {
7+ export function bind ( node : HTMLElement | Element | Node ) {
88 return {
9- create : ( type , props , children ) => createElement ( type , props , ...children ) ,
10- render : ( element ) => {
9+ create : (
10+ type : string ,
11+ props : Record < string , unknown > ,
12+ children : ComponentChildren [ ] ,
13+ ) => createElement ( type , props , ...children ) ,
14+ render : ( element : HTMLElement | Element | Node ) => {
1115 render ( element , node ) ;
1216 } ,
1317 unmount : ( ) => render ( null , node ) ,
@@ -22,26 +26,29 @@ export function DjangoForm({
2226 const form = document . getElementById ( formId ) as HTMLFormElement ;
2327
2428 // Submission event function
25- const onSubmitEvent = ( event ) => {
29+ const onSubmitEvent = ( event : Event ) => {
2630 event . preventDefault ( ) ;
2731 const formData = new FormData ( form ) ;
2832
2933 // Convert the FormData object to a plain object by iterating through it
3034 // If duplicate keys are present, convert the value into an array of values
3135 const entries = formData . entries ( ) ;
3236 const formDataArray = Array . from ( entries ) ;
33- const formDataObject = formDataArray . reduce ( ( acc , [ key , value ] ) => {
34- if ( acc [ key ] ) {
35- if ( Array . isArray ( acc [ key ] ) ) {
36- acc [ key ] . push ( value ) ;
37+ const formDataObject = formDataArray . reduce < Record < string , unknown > > (
38+ ( acc , [ key , value ] ) => {
39+ if ( acc [ key ] ) {
40+ if ( Array . isArray ( acc [ key ] ) ) {
41+ acc [ key ] . push ( value ) ;
42+ } else {
43+ acc [ key ] = [ acc [ key ] , value ] ;
44+ }
3745 } else {
38- acc [ key ] = [ acc [ key ] , value ] ;
46+ acc [ key ] = value ;
3947 }
40- } else {
41- acc [ key ] = value ;
42- }
43- return acc ;
44- } , { } ) ;
48+ return acc ;
49+ } ,
50+ { } ,
51+ ) ;
4552
4653 onSubmitCallback ( formDataObject ) ;
4754 } ;
0 commit comments