@@ -36,39 +36,46 @@ final public function formatHtmlFields(array $frontData, bool $keepOnlyHtmlField
3636 if ($ field instanceof SharpFormHtmlField) {
3737 return [
3838 $ key => $ field ->render ([
39- 'fieldKey ' => $ key ,
4039 ...$ formattedData ,
4140 ...(is_array ($ value ) ? $ value : []),
42- ], $ key ),
41+ ]),
4342 ];
4443 }
4544
46- if ($ field instanceof SharpFormListField && $ field ->itemFields ()->whereInstanceOf (SharpFormHtmlField::class)->isNotEmpty ()) {
45+ if ($ field instanceof SharpFormListField
46+ && $ field ->itemFields ()->whereInstanceOf (SharpFormHtmlField::class)->isNotEmpty ()
47+ ) {
4748 return [
48- $ key => collect ($ value )->map (function ($ item , $ index ) use ($ field , $ key , $ formattedData , $ keepOnlyHtmlFields ) {
49- return collect ($ item )->mapWithKeys (function ($ itemValue , $ itemKey ) use ($ field , $ key , $ index , $ formattedData , $ keepOnlyHtmlFields ) {
50- $ itemField = $ field ->findItemFormFieldByKey ($ itemKey );
51-
52- if ($ itemField instanceof SharpFormHtmlField) {
53- $ fieldKey = "$ key. $ index. $ itemKey " ;
54-
55- return [
56- $ itemKey => $ itemField ->render ([
57- 'fieldKey ' => $ fieldKey ,
58- ...$ formattedData ,
59- ...(is_array ($ itemValue ) ? $ itemValue : []),
60- ], $ fieldKey ),
61- ];
62- }
63-
64- return $ keepOnlyHtmlFields ? [] : [$ itemKey => $ itemValue ];
65- })->all ();
66- })->all (),
49+ $ key => $ this ->formatListHtmlFields ($ field , $ value , $ formattedData , $ keepOnlyHtmlFields ),
6750 ];
6851 }
6952
7053 return $ keepOnlyHtmlFields ? [] : [$ key => $ value ];
7154 })
7255 ->all ();
7356 }
57+
58+ private function formatListHtmlFields (
59+ SharpFormListField $ field ,
60+ array $ listValue ,
61+ array $ formattedData ,
62+ bool $ keepOnlyHtmlFields
63+ ): array {
64+ return collect ($ listValue )->map (fn ($ item , $ index ) => collect ($ item )->mapWithKeys (
65+ function ($ itemFieldValue , $ itemFieldKey ) use ($ field , $ index , $ formattedData , $ keepOnlyHtmlFields ) {
66+ $ itemField = $ field ->findItemFormFieldByKey ($ itemFieldKey );
67+
68+ if ($ itemField instanceof SharpFormHtmlField) {
69+ return [
70+ $ itemFieldKey => $ itemField ->render ([
71+ ...($ formattedData [$ field ->key ][$ index ] ?? []),
72+ ...(is_array ($ itemFieldValue ) ? $ itemFieldValue : []),
73+ ]),
74+ ];
75+ }
76+
77+ return $ keepOnlyHtmlFields ? [] : [$ itemFieldKey => $ itemFieldValue ];
78+ })->all ()
79+ )->all ();
80+ }
7481}
0 commit comments