File tree Expand file tree Collapse file tree 2 files changed +33
-9
lines changed
Expand file tree Collapse file tree 2 files changed +33
-9
lines changed Original file line number Diff line number Diff line change 44
55use Illuminate \Support \Collection ;
66use Tdwesten \StatamicBuilder \Fieldset ;
7- use Tdwesten \StatamicBuilder \FieldTypes \Field ;
87
98class FieldParser
109{
@@ -15,15 +14,15 @@ public static function parseMixedFieldsToFlatCollection($items): Collection
1514 {
1615 $ items = collect ($ items );
1716
18- $ fieldsets = $ items ->filter (function ($ field ) {
19- return $ field instanceof Fieldset;
20- })->flatten ();
17+ $ items
18+ ->map (function ($ item ) {
19+ if ($ item instanceof Fieldset) {
20+ return $ item ;
21+ }
2122
22- $ fields = $ items ->filter (function ($ field ) {
23- return $ field instanceof Field;
24- });
25-
26- $ items = collect ($ fieldsets )->merge ($ fields );
23+ return [$ item ];
24+ })
25+ ->flatten ();
2726
2827 return $ items ;
2928 }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Tests \Unit ;
4+
5+ use Tdwesten \StatamicBuilder \FieldTypes \Text ;
6+ use Tdwesten \StatamicBuilder \Helpers \FieldParser ;
7+ use Tests \Helpers \TestFieldset ;
8+
9+ test ('it preserves field order when flattening mixed fields ' , function () {
10+ $ fieldset = new TestFieldset ('test_fieldset ' );
11+ $ standaloneField1 = new Text ('standalone_field_1 ' );
12+ $ standaloneField2 = new Text ('standalone_field_2 ' );
13+
14+ $ mixedFields = [
15+ $ standaloneField1 ,
16+ $ fieldset ,
17+ $ standaloneField2 ,
18+ ];
19+
20+ $ fields = FieldParser::parseMixedFieldsToFlatCollection ($ mixedFields );
21+
22+ expect ($ fields [0 ]->toArray ()['handle ' ])->toBe ('standalone_field_1 ' );
23+ expect ($ fields [1 ]->toArray ()['import ' ])->toBe ('test_fieldset ' );
24+ expect ($ fields [2 ]->toArray ()['handle ' ])->toBe ('standalone_field_2 ' );
25+ });
You can’t perform that action at this time.
0 commit comments