@@ -7,11 +7,15 @@ import androidx.compose.foundation.layout.Arrangement
7
7
import androidx.compose.foundation.layout.Box
8
8
import androidx.compose.foundation.layout.Column
9
9
import androidx.compose.foundation.layout.IntrinsicSize
10
+ import androidx.compose.foundation.layout.PaddingValues
10
11
import androidx.compose.foundation.layout.Row
12
+ import androidx.compose.foundation.layout.RowScope
11
13
import androidx.compose.foundation.layout.Spacer
12
14
import androidx.compose.foundation.layout.fillMaxHeight
13
15
import androidx.compose.foundation.layout.height
16
+ import androidx.compose.foundation.layout.padding
14
17
import androidx.compose.foundation.layout.width
18
+ import androidx.compose.foundation.layout.wrapContentWidth
15
19
import androidx.compose.foundation.lazy.LazyRow
16
20
import androidx.compose.foundation.lazy.rememberLazyListState
17
21
import androidx.compose.foundation.rememberScrollState
@@ -438,10 +442,14 @@ private fun RenderGrid(
438
442
}
439
443
} ? : Arrangement .SpaceAround
440
444
445
+ val padding = scopedMod?.base?.padding ? : com.utsman.composeremote.PaddingValues ()
446
+ val contentPadding = padding.toComposePaddingValue()
447
+
441
448
if (orientation == " horizontal" ) {
442
449
val gridModifier =
443
450
if (scopedMod.base.height != null ) {
444
- modifier.height(scopedMod.base.height.dp)
451
+ modifier
452
+ .height(scopedMod.base.height.dp)
445
453
} else {
446
454
modifier
447
455
}
@@ -455,6 +463,7 @@ private fun RenderGrid(
455
463
horizontalArrangement = horizontalArrangement,
456
464
verticalArrangement = verticalArrangement,
457
465
enableSnap = enableSnap,
466
+ contentPadding = contentPadding,
458
467
path = path,
459
468
) { index, wrapper ->
460
469
ChildDynamicLayout (
@@ -467,11 +476,17 @@ private fun RenderGrid(
467
476
)
468
477
}
469
478
} else {
479
+ val paddingModifier = gridModifier.then(
480
+ Modifier .padding(contentPadding),
481
+ )
482
+
483
+ val isFillMaxWidth = scopedMod.base.fillMaxWidth
470
484
HorizontalGrid (
471
485
items = component.children.orEmpty(),
472
486
rows = scopedMod.rows ? : 1 ,
473
- modifier = gridModifier ,
487
+ modifier = paddingModifier ,
474
488
horizontalArrangement = horizontalArrangement,
489
+ isFillMaxWidth = isFillMaxWidth ? : false ,
475
490
verticalArrangement = verticalArrangement,
476
491
) { index, wrapper ->
477
492
ChildDynamicLayout (
@@ -524,10 +539,14 @@ private fun RenderGrid(
524
539
modifier
525
540
}
526
541
542
+ val paddingModifier = gridModifier.then(
543
+ Modifier .padding(contentPadding),
544
+ )
545
+
527
546
VerticalGrid (
528
547
items = component.children.orEmpty(),
529
548
columns = scopedMod?.columns ? : 1 ,
530
- modifier = gridModifier ,
549
+ modifier = paddingModifier ,
531
550
verticalArrangement = verticalArrangement,
532
551
horizontalArrangement = horizontalArrangement,
533
552
) { index, wrapper ->
@@ -892,16 +911,23 @@ private fun <T> HorizontalGrid(
892
911
modifier : Modifier = Modifier ,
893
912
horizontalArrangement : Arrangement .Horizontal ,
894
913
verticalArrangement : Arrangement .Vertical ,
895
- itemContent : @Composable (Int , T ) -> Unit ,
914
+ isFillMaxWidth : Boolean ,
915
+ itemContent : @Composable RowScope .(Int , T ) -> Unit ,
896
916
) {
897
917
val columns = (items.size + rows - 1 ) / rows
898
918
899
919
Row (
900
920
modifier = modifier,
901
921
horizontalArrangement = horizontalArrangement,
902
922
) {
923
+ val itemMod = if (isFillMaxWidth) {
924
+ Modifier .weight(1f / rows)
925
+ } else {
926
+ Modifier .wrapContentWidth()
927
+ }
903
928
for (columnIndex in 0 until columns) {
904
929
Column (
930
+ modifier = itemMod,
905
931
verticalArrangement = verticalArrangement,
906
932
) {
907
933
for (rowIndex in 0 until rows) {
@@ -911,6 +937,7 @@ private fun <T> HorizontalGrid(
911
937
contentAlignment = Alignment .Center ,
912
938
) {
913
939
itemContent(
940
+ this @Row,
914
941
itemIndex,
915
942
items[itemIndex],
916
943
)
@@ -937,6 +964,7 @@ private fun <T> ScrollableHorizontalGrid(
937
964
verticalArrangement : Arrangement .Vertical = Arrangement .Top ,
938
965
enableSnap : Boolean ,
939
966
path : String ,
967
+ contentPadding : PaddingValues = PaddingValues (),
940
968
itemContent : @Composable (Int , T ) -> Unit ,
941
969
) {
942
970
val columns = (items.size + rows - 1 ) / rows
@@ -976,6 +1004,7 @@ private fun <T> ScrollableHorizontalGrid(
976
1004
modifier = modifier,
977
1005
horizontalArrangement = horizontalArrangement,
978
1006
flingBehavior = flingBehavior,
1007
+ contentPadding = contentPadding,
979
1008
) {
980
1009
items(columns) { columnIndex ->
981
1010
Column (
0 commit comments