カレンダーピッカー

通常カレンダーピッカー

呼び出し側は

GrantDateItem(
    grantDate = uiState.grantDate,
    onDateSelected = {
        svm.setGrantDate(it)
    }
)

年と月のカスタムピッカー

1. SettingViewModel に追加する関数

previousMonth() / nextMonth() の近くに追加してください。

fun setYearMonth(year: Int, month: Int) {
    val newDate = LocalDate.of(year, month, 1)
    val safeDay = _today.value.dayOfMonth.coerceAtMost(newDate.lengthOfMonth())
    _today.value = LocalDate.of(year, month, safeDay)
}

2. MainTopBar の該当ボタンの修正

var showYearMonthPicker by rememberSaveable { mutableStateOf(false) }

// ...
Button(
    onClick = { showYearMonthPicker = true },  // ← ここを変更
    contentPadding = PaddingValues(0.dp),
    colors = ButtonDefaults.buttonColors(
        containerColor = baseColor,
        contentColor = baseColorText
    )
) {
    Text(text = today.format(formatter))
}

MainTopBarのComposable末尾(Columnの外側でもOK)に以下を追加:

if (showYearMonthPicker) {
    YearMonthPickerBottomSheet(
        initialYear = today.year,
        initialMonth = today.monthValue,
        onDismiss = { showYearMonthPicker = false },
        onConfirm = { year, month ->
            svm.setYearMonth(year, month)
            showYearMonthPicker = false
        }
    )
}
タイトルとURLをコピーしました