generated from boguszpawlowski/AndroidTemplate
-
Notifications
You must be signed in to change notification settings - Fork 39
/
DefaultMonthHeader.kt
69 lines (67 loc) · 2.42 KB
/
DefaultMonthHeader.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package io.github.boguszpawlowski.composecalendar.header
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.width
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.KeyboardArrowLeft
import androidx.compose.material.icons.filled.KeyboardArrowRight
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import java.time.format.TextStyle.FULL
import java.util.Locale
/**
* Default implementation of month header, shows current month and year, as well as
* 2 arrows for changing currently showed month
*/
@Composable
public fun DefaultMonthHeader(
monthState: MonthState,
modifier: Modifier = Modifier,
) {
Row(
modifier = modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
) {
IconButton(
modifier = Modifier.testTag("Decrement"),
onClick = { monthState.currentMonth = monthState.currentMonth.minusMonths(1) }
) {
Image(
imageVector = Icons.Default.KeyboardArrowLeft,
colorFilter = ColorFilter.tint(MaterialTheme.colors.onSurface),
contentDescription = "Previous",
)
}
Text(
modifier = Modifier.testTag("MonthLabel"),
text = monthState.currentMonth.month
.getDisplayName(FULL, Locale.getDefault())
.lowercase()
.replaceFirstChar { it.titlecase() },
style = MaterialTheme.typography.h4,
)
Spacer(modifier = Modifier.width(8.dp))
Text(text = monthState.currentMonth.year.toString(), style = MaterialTheme.typography.h4)
IconButton(
modifier = Modifier.testTag("Increment"),
onClick = { monthState.currentMonth = monthState.currentMonth.plusMonths(1) }
) {
Image(
imageVector = Icons.Default.KeyboardArrowRight,
colorFilter = ColorFilter.tint(MaterialTheme.colors.onSurface),
contentDescription = "Next",
)
}
}
}