Skip to content

Commit

Permalink
Release/1.7.3 (#198)
Browse files Browse the repository at this point in the history
* [Button][Preview] - Make preview private

* fix(TextField) update textFieldValueState if different from lastTextValue

* Task/calendar improvements (#197)

* [Button][Preview] - Make preview private

* [Compose] - Bump Material 3 & calendar improvements

* [Bump Grapes Version] - 1.7.3

---------

Co-authored-by: Kélian CLERC <[email protected]>
Co-authored-by: Jean-Philippe <[email protected]>
  • Loading branch information
3 people authored Apr 4, 2023
1 parent 43725b8 commit 1a5c38c
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 14 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
buildscript {

ext {
grapes_version = '1.7.2'
grapes_version = '1.7.3'

kotlin_version = '1.7.10'
firebase_app_distribution_version = '2.1.2'
Expand All @@ -12,7 +12,7 @@ buildscript {
compose_version = '1.2.1'
compose_kotlin_compiler = '1.3.1'
compose_bom_version = '2023.01.00'
compose_material_3_version = '1.1.0-alpha08'
compose_material_3_version = '1.1.0-beta01'

android_material_version = '1.4.0'
androidx_core_ktx_version = '1.9.0'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@ package com.spendesk.grapes.compose.calendar

import androidx.compose.material3.DatePicker
import androidx.compose.material3.DatePickerDefaults
import androidx.compose.material3.DatePickerState
import androidx.compose.material3.DisplayMode
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.rememberDatePickerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.spendesk.grapes.compose.extensions.resetDateToMidnight
import com.spendesk.grapes.compose.extensions.resetDateToTomorrowMidnight
import com.spendesk.grapes.compose.theme.GrapesTheme
import java.util.Calendar
import java.util.Calendar.YEAR
import java.util.Date
import java.util.TimeZone

Expand All @@ -35,25 +35,26 @@ import java.util.TimeZone
@Composable
fun GrapesDatePicker(
modifier: Modifier = Modifier,
date: Date = Date(),
date: Date? = null,
minDate: Date? = null,
maxDate: Date? = null,
onDateSelected: ((Date) -> Unit)? = null
) {
val cal = Calendar.getInstance().apply { time = date }
val selectedDate =
rememberDatePickerState(
initialSelectedDateMillis = date.time,
initialDisplayedMonthMillis = null,
yearRange = IntRange(cal.get(YEAR) - 3, cal.get(YEAR)),
val selectedDate = remember(date, minDate, maxDate) {
DatePickerState(
initialSelectedDateMillis = date?.time,
initialDisplayedMonthMillis = date?.time,
yearRange = DatePickerDefaults.YearRange,
initialDisplayMode = DisplayMode.Picker
)
}

DatePicker(
state = selectedDate,
modifier = modifier,
showModeToggle = false,
title = null,
headline = null,
colors = DatePickerDefaults.colors(
containerColor = GrapesTheme.colors.mainBackground,
titleContentColor = GrapesTheme.colors.mainNeutralDarkest,
Expand Down Expand Up @@ -82,7 +83,9 @@ fun GrapesDatePicker(

LaunchedEffect(selectedDate.selectedDateMillis) {
selectedDate.selectedDateMillis?.let {
onDateSelected?.invoke(Date(it))
if (Date(it).resetDateToMidnight() != date?.resetDateToMidnight()) {
onDateSelected?.invoke(Date(it))
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@ fun GrapesTimePicker(
)

LaunchedEffect(timerPickerState.hour, timerPickerState.minute) {
onTimeSelected?.invoke(timerPickerState.hour, timerPickerState.minute)
if (timerPickerState.hour != initialHour && timerPickerState.minute != initialMinute) {
onTimeSelected?.invoke(timerPickerState.hour, timerPickerState.minute)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.spendesk.grapes.compose.message

import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ internal fun GrapesBaseTextField(
// CoreTextField's onValueChange is called multiple times without recomposition in between.
var lastTextValue by remember(value) { mutableStateOf(value) }

SideEffect {
if (textFieldValueState.text != lastTextValue) {
textFieldValueState = textFieldValueState.copy(text = value)
}
}

GrapesBaseTextField(
value = textFieldValueState,
placeholderValue = placeholderValue,
Expand Down

0 comments on commit 1a5c38c

Please sign in to comment.