diff --git a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt index 8986639ff3..54c317e7be 100644 --- a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt +++ b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/calendar/CalendarTest.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.test.SemanticsMatcher import androidx.compose.ui.test.assertLabelEquals import androidx.compose.ui.test.junit4.ComposeTestRule import androidx.compose.ui.test.junit4.createAndroidComposeRule -import androidx.compose.ui.test.onNodeWithLabel +import androidx.compose.ui.test.onNodeWithContentDescription import androidx.compose.ui.test.performClick import androidx.compose.ui.test.performScrollTo import dagger.hilt.android.testing.HiltAndroidRule @@ -69,16 +69,16 @@ class CalendarTest { @Test fun scrollsToTheBottom() { - composeTestRule.onNodeWithLabel("January 1").assertExists() - composeTestRule.onNodeWithLabel("December 31").performScrollTo().performClick() + composeTestRule.onNodeWithContentDescription("January 1").assertExists() + composeTestRule.onNodeWithContentDescription("December 31").performScrollTo().performClick() assert(datesRepository.datesSelected.toString() == "Dec 31") } @Test fun onDaySelected() { - composeTestRule.onNodeWithLabel("January 1").assertExists() - composeTestRule.onNodeWithLabel("January 2").assertExists().performClick() - composeTestRule.onNodeWithLabel("January 3").assertExists() + composeTestRule.onNodeWithContentDescription("January 1").assertExists() + composeTestRule.onNodeWithContentDescription("January 2").assertExists().performClick() + composeTestRule.onNodeWithContentDescription("January 3").assertExists() val datesNoSelected = composeTestRule.onDateNodes(NoSelected) datesNoSelected[0].assertLabelEquals("January 1") @@ -89,13 +89,13 @@ class CalendarTest { @Test fun twoDaysSelected() { - composeTestRule.onNodeWithLabel("January 2").assertExists().performClick() + composeTestRule.onNodeWithContentDescription("January 2").assertExists().performClick() val datesNoSelectedOneClick = composeTestRule.onDateNodes(NoSelected) datesNoSelectedOneClick[0].assertLabelEquals("January 1") datesNoSelectedOneClick[1].assertLabelEquals("January 3") - composeTestRule.onNodeWithLabel("January 4").assertExists().performClick() + composeTestRule.onNodeWithContentDescription("January 4").assertExists().performClick() composeTestRule.onDateNode(FirstDay).assertLabelEquals("January 2") composeTestRule.onDateNode(Selected).assertLabelEquals("January 3") diff --git a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/details/DetailsActivityTest.kt b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/details/DetailsActivityTest.kt index 0ad41add80..d91c364ee6 100644 --- a/Crane/app/src/androidTest/java/androidx/compose/samples/crane/details/DetailsActivityTest.kt +++ b/Crane/app/src/androidTest/java/androidx/compose/samples/crane/details/DetailsActivityTest.kt @@ -41,6 +41,8 @@ import org.junit.Rule import org.junit.Test import java.util.concurrent.CountDownLatch import javax.inject.Inject +import kotlin.math.pow +import kotlin.math.round @UninstallModules(DispatchersModule::class) @HiltAndroidTest @@ -118,4 +120,5 @@ class DetailsActivityTest { } } -private fun Double.round(decimals: Int = 2): Double = "%.${decimals}f".format(this).toDouble() +private fun Double.round(decimals: Int = 2): Double = + round(this * 10f.pow(decimals)) / 10f.pow(decimals) diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt index e42d380cdf..9091b5730c 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/base/BaseUserInput.kt @@ -117,7 +117,7 @@ private fun CraneBaseUserInput( showCaption: () -> Boolean = { true }, tintIcon: () -> Boolean, tint: Color = AmbientContentColor.current, - children: @Composable () -> Unit + content: @Composable () -> Unit ) { Surface(modifier = modifier, color = MaterialTheme.colors.primaryVariant) { Row(Modifier.padding(all = 12.dp)) { @@ -138,7 +138,7 @@ private fun CraneBaseUserInput( Spacer(Modifier.preferredWidth(8.dp)) } Row(Modifier.weight(1f).align(Alignment.CenterVertically)) { - children() + content() } } } @@ -146,7 +146,7 @@ private fun CraneBaseUserInput( @Preview @Composable -fun previewInput() { +fun PreviewInput() { CraneScaffold { CraneBaseUserInput( tintIcon = { true }, diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt index ca73321280..7522815bcd 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/base/ExploreSection.kt @@ -27,7 +27,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.preferredHeight import androidx.compose.foundation.layout.preferredSize import androidx.compose.foundation.layout.preferredWidth -import androidx.compose.foundation.lazy.LazyColumnFor +import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Divider import androidx.compose.material.MaterialTheme @@ -62,16 +62,19 @@ fun ExploreSection( style = MaterialTheme.typography.caption.copy(color = crane_caption) ) Spacer(Modifier.preferredHeight(8.dp)) - LazyColumnFor( + LazyColumn( modifier = Modifier.weight(1f), - items = exploreList - ) { item -> - ExploreItem( - modifier = Modifier.fillParentMaxWidth(), - item = item, - onItemClicked = onItemClicked - ) - Divider(color = crane_divider_color) + ) { + items(exploreList) { exploreItem -> + Column(Modifier.fillParentMaxWidth()) { + ExploreItem( + modifier = Modifier.fillParentMaxWidth(), + item = exploreItem, + onItemClicked = onItemClicked + ) + Divider(color = crane_divider_color) + } + } } } } @@ -119,8 +122,8 @@ private fun ExploreItem( } @Composable -private fun ExploreImageContainer(children: @Composable () -> Unit) { +private fun ExploreImageContainer(content: @Composable () -> Unit) { Surface(Modifier.preferredSize(width = 60.dp, height = 60.dp), RoundedCornerShape(4.dp)) { - children() + content() } } diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/base/Scaffold.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/base/Scaffold.kt index 91ade84053..33087fc1f3 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/base/Scaffold.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/base/Scaffold.kt @@ -22,10 +22,10 @@ import androidx.compose.runtime.Composable import androidx.compose.samples.crane.ui.CraneTheme @Composable -fun CraneScaffold(children: @Composable () -> Unit) { +fun CraneScaffold(content: @Composable () -> Unit) { CraneTheme { Surface(color = MaterialTheme.colors.primary) { - children() + content() } } } diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt index 113775a69b..b049a7b383 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/Calendar.kt @@ -50,7 +50,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.semantics.SemanticsPropertyKey import androidx.compose.ui.semantics.SemanticsPropertyReceiver -import androidx.compose.ui.semantics.accessibilityLabel +import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -137,7 +137,7 @@ private fun Week( day, onDayClicked, Modifier.semantics { - accessibilityLabel = "${month.name} ${day.value}" + contentDescription = "${month.name} ${day.value}" dayStatusProperty = day.status } ) @@ -195,21 +195,21 @@ private fun Day(name: String) { private fun DayContainer( modifier: Modifier = Modifier, backgroundColor: Color = Color.Transparent, - children: @Composable () -> Unit + content: @Composable () -> Unit ) { // What if this doesn't fit the screen? - LayoutFlexible(1f) + LayoutAspectRatio(1f) Surface( modifier = modifier.preferredSize(width = CELL_SIZE, height = CELL_SIZE), color = backgroundColor ) { - children() + content() } } @Composable private fun DayStatusContainer( status: DaySelectedStatus, - children: @Composable () -> Unit + content: @Composable () -> Unit ) { if (status.isMarked()) { Box { @@ -220,10 +220,10 @@ private fun DayStatusContainer( } else if (status == DaySelectedStatus.LastDay) { SemiRect(color = color, lookingLeft = true) } - children() + content() } } else { - children() + content() } } diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/model/CalendarMonth.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/model/CalendarMonth.kt index faf2189e66..19d0d3f8f9 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/model/CalendarMonth.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/calendar/model/CalendarMonth.kt @@ -23,7 +23,7 @@ data class CalendarMonth( val monthNumber: Int, val startDayOfWeek: DayOfWeek ) { - val days = mutableListOf().apply { + private val days = mutableListOf().apply { // Add offset of the start of the month for (i in 1..startDayOfWeek.ordinal) { add( diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/details/DetailsActivity.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/details/DetailsActivity.kt index be529b7af3..05b2c8acd4 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/details/DetailsActivity.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/details/DetailsActivity.kt @@ -29,7 +29,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.preferredHeight import androidx.compose.material.Button -import androidx.compose.material.ButtonConstants +import androidx.compose.material.ButtonDefaults import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.runtime.Composable @@ -186,7 +186,7 @@ private fun ZoomControls( private fun ZoomButton(text: String, onClick: () -> Unit) { Button( modifier = Modifier.padding(8.dp), - colors = ButtonConstants.defaultButtonColors( + colors = ButtonDefaults.buttonColors( backgroundColor = MaterialTheme.colors.onPrimary, contentColor = MaterialTheme.colors.primary ), diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/home/HomeFeatures.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/home/HomeFeatures.kt index 64a6f46479..7622f64d08 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/home/HomeFeatures.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/home/HomeFeatures.kt @@ -67,8 +67,8 @@ fun EatSearchContent(datesSelected: String, eatUpdates: EatSearchContentUpdates) } @Composable -private fun CraneSearch(searchItems: @Composable () -> Unit) { +private fun CraneSearch(content: @Composable () -> Unit) { Column(Modifier.padding(start = 24.dp, top = 0.dp, end = 24.dp, bottom = 12.dp)) { - searchItems() + content() } } diff --git a/Crane/app/src/main/java/androidx/compose/samples/crane/ui/CraneTheme.kt b/Crane/app/src/main/java/androidx/compose/samples/crane/ui/CraneTheme.kt index 5090238d65..85531fe883 100644 --- a/Crane/app/src/main/java/androidx/compose/samples/crane/ui/CraneTheme.kt +++ b/Crane/app/src/main/java/androidx/compose/samples/crane/ui/CraneTheme.kt @@ -49,8 +49,8 @@ val BottomSheetShape = RoundedCornerShape( ) @Composable -fun CraneTheme(children: @Composable () -> Unit) { +fun CraneTheme(content: @Composable () -> Unit) { MaterialTheme(colors = craneColors, typography = craneTypography) { - children() + content() } } diff --git a/Crane/build.gradle b/Crane/build.gradle index 776095811c..1e1b42fadc 100644 --- a/Crane/build.gradle +++ b/Crane/build.gradle @@ -31,7 +31,7 @@ buildscript { } plugins { - id 'com.diffplug.spotless' version '5.7.0' + id 'com.diffplug.spotless' version '5.8.2' } subprojects { diff --git a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt index c5c8d7d80c..6639536e7f 100644 --- a/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt +++ b/Crane/buildSrc/src/main/java/com/example/crane/buildsrc/Dependencies.kt @@ -17,11 +17,11 @@ package com.example.crane.buildsrc object Versions { - const val ktLint = "0.39.0" + const val ktLint = "0.40.0" } object Libs { - const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha02" + const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha03" const val ktLint = "com.pinterest:ktlint:${Versions.ktLint}" object GoogleMaps { @@ -30,12 +30,12 @@ object Libs { } object Accompanist { - private const val version = "0.4.0" + private const val version = "0.4.1.compose-7033025-SNAPSHOT" const val coil = "dev.chrisbanes.accompanist:accompanist-coil:$version" } object Kotlin { - private const val version = "1.4.20" + private const val version = "1.4.21" const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$version" const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$version" const val extensions = "org.jetbrains.kotlin:kotlin-android-extensions:$version" @@ -49,8 +49,8 @@ object Libs { object AndroidX { object Compose { - const val snapshot = "" - const val version = "1.0.0-alpha08" + const val snapshot = "7033025" + private const val version = "1.0.0-SNAPSHOT" const val runtime = "androidx.compose.runtime:runtime:$version" const val runtimeLivedata = "androidx.compose.runtime:runtime-livedata:$version" diff --git a/Crane/gradle/wrapper/gradle-wrapper.properties b/Crane/gradle/wrapper/gradle-wrapper.properties index 59a4725244..adcbca81af 100644 --- a/Crane/gradle/wrapper/gradle-wrapper.properties +++ b/Crane/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Oct 23 09:30:32 CEST 2020 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-rc-1-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME