@@ -898,61 +898,6 @@ function combineSpacedArray(parts) {
898898 return finalParts ;
899899}
900900
901- const buildFormKey = function ( key , parentKeys ) {
902- let fieldName = '' ;
903- [ ...parentKeys , key ] . forEach ( ( name ) => {
904- fieldName += fieldName ? `[${ name } ]` : name ;
905- } ) ;
906- return fieldName ;
907- } ;
908- const addObjectToFormData = function ( formData , data , parentKeys ) {
909- Object . keys ( data ) . forEach ( ( key => {
910- let value = data [ key ] ;
911- if ( value === true ) {
912- value = 1 ;
913- }
914- if ( value === false ) {
915- value = 0 ;
916- }
917- if ( value === null ) {
918- return ;
919- }
920- if ( typeof value === 'object' ) {
921- addObjectToFormData ( formData , value , [ ...parentKeys , key ] ) ;
922- return ;
923- }
924- formData . append ( buildFormKey ( key , parentKeys ) , value ) ;
925- } ) ) ;
926- } ;
927- const addObjectToSearchParams = function ( searchParams , data , parentKeys ) {
928- Object . keys ( data ) . forEach ( ( key => {
929- let value = data [ key ] ;
930- if ( value === true ) {
931- value = 1 ;
932- }
933- if ( value === false ) {
934- value = 0 ;
935- }
936- if ( value === null ) {
937- return ;
938- }
939- if ( typeof value === 'object' ) {
940- addObjectToSearchParams ( searchParams , value , [ ...parentKeys , key ] ) ;
941- return ;
942- }
943- searchParams . set ( buildFormKey ( key , parentKeys ) , value ) ;
944- } ) ) ;
945- } ;
946- function buildFormData ( data ) {
947- const formData = new FormData ( ) ;
948- addObjectToFormData ( formData , data , [ ] ) ;
949- return formData ;
950- }
951- function buildSearchParams ( searchParams , data ) {
952- addObjectToSearchParams ( searchParams , data , [ ] ) ;
953- return searchParams ;
954- }
955-
956901function setDeepData ( data , propertyPath , value ) {
957902 const finalData = JSON . parse ( JSON . stringify ( data ) ) ;
958903 let currentLevelData = finalData ;
@@ -1200,13 +1145,19 @@ class default_1 extends Controller {
12001145 fetchOptions . headers [ 'X-CSRF-TOKEN' ] = this . csrfValue ;
12011146 }
12021147 }
1203- if ( ! action && this . _willDataFitInUrl ( ) ) {
1204- buildSearchParams ( params , this . dataValue ) ;
1205- fetchOptions . method = 'GET' ;
1148+ let dataAdded = false ;
1149+ if ( ! action ) {
1150+ const dataJson = JSON . stringify ( this . dataValue ) ;
1151+ if ( this . _willDataFitInUrl ( dataJson , params ) ) {
1152+ params . set ( 'data' , dataJson ) ;
1153+ fetchOptions . method = 'GET' ;
1154+ dataAdded = true ;
1155+ }
12061156 }
1207- else {
1157+ if ( ! dataAdded ) {
12081158 fetchOptions . method = 'POST' ;
1209- fetchOptions . body = buildFormData ( this . dataValue ) ;
1159+ fetchOptions . body = JSON . stringify ( this . dataValue ) ;
1160+ fetchOptions . headers [ 'Content-Type' ] = 'application/json' ;
12101161 }
12111162 this . _onLoadingStart ( ) ;
12121163 const paramsString = params . toString ( ) ;
@@ -1358,8 +1309,9 @@ class default_1 extends Controller {
13581309 element . removeAttribute ( attribute ) ;
13591310 } ) ;
13601311 }
1361- _willDataFitInUrl ( ) {
1362- return Object . values ( this . dataValue ) . join ( ',' ) . length < 1500 ;
1312+ _willDataFitInUrl ( dataJson , params ) {
1313+ const urlEncodedJsonData = new URLSearchParams ( dataJson ) . toString ( ) ;
1314+ return ( urlEncodedJsonData + params . toString ( ) ) . length < 1500 ;
13631315 }
13641316 _executeMorphdom ( newHtml ) {
13651317 function htmlToElement ( html ) {
0 commit comments