Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
chikoski authored Oct 16, 2024
2 parents 2be946c + 90b8500 commit ace0816
Show file tree
Hide file tree
Showing 8 changed files with 1,055 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.example.compose.snippets

import NavigationDrawerExamples
import android.os.Bundle
import android.os.StrictMode
import androidx.activity.ComponentActivity
Expand All @@ -41,17 +42,20 @@ import com.example.compose.snippets.components.DatePickerExamples
import com.example.compose.snippets.components.DialogExamples
import com.example.compose.snippets.components.DividerExamples
import com.example.compose.snippets.components.FloatingActionButtonExamples
import com.example.compose.snippets.components.MenusExamples
import com.example.compose.snippets.components.PartialBottomSheet
import com.example.compose.snippets.components.ProgressIndicatorExamples
import com.example.compose.snippets.components.ScaffoldExample
import com.example.compose.snippets.components.SliderExamples
import com.example.compose.snippets.components.SwitchExamples
import com.example.compose.snippets.components.TimePickerExamples
import com.example.compose.snippets.components.TooltipExamples
import com.example.compose.snippets.graphics.ApplyPolygonAsClipImage
import com.example.compose.snippets.graphics.BitmapFromComposableFullSnippet
import com.example.compose.snippets.graphics.BrushExamplesScreen
import com.example.compose.snippets.images.ImageExamplesScreen
import com.example.compose.snippets.landing.LandingScreen
import com.example.compose.snippets.layouts.PagerExamples
import com.example.compose.snippets.navigation.Destination
import com.example.compose.snippets.navigation.TopComponentsDestination
import com.example.compose.snippets.ui.theme.SnippetsTheme
Expand Down Expand Up @@ -86,6 +90,7 @@ class SnippetsActivity : ComponentActivity() {
}
Destination.ShapesExamples -> ApplyPolygonAsClipImage()
Destination.SharedElementExamples -> PlaceholderSizeAnimated_Demo()
Destination.PagerExamples -> PagerExamples()
}
}
}
Expand All @@ -111,6 +116,9 @@ class SnippetsActivity : ComponentActivity() {
TopComponentsDestination.TimePickerExamples -> TimePickerExamples()
TopComponentsDestination.DatePickerExamples -> DatePickerExamples()
TopComponentsDestination.CarouselExamples -> CarouselExamples()
TopComponentsDestination.MenusExample -> MenusExamples()
TopComponentsDestination.TooltipExamples -> TooltipExamples()
TopComponentsDestination.NavigationDrawerExamples -> NavigationDrawerExamples()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
package com.example.compose.snippets.components

import androidx.compose.foundation.background
import androidx.compose.foundation.gestures.awaitEachGesture
import androidx.compose.foundation.gestures.awaitFirstDown
import androidx.compose.foundation.gestures.waitForUpOrCancellation
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
Expand Down Expand Up @@ -49,12 +52,24 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.input.pointer.PointerEventPass
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Popup
import com.example.compose.snippets.touchinput.userinteractions.MyAppTheme
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale

@Preview
@Composable
private fun DatePickerPreview() {
MyAppTheme {
DatePickerExamples()
}
}

// [START android_compose_components_datepicker_examples]
// [START_EXCLUDE]
@Composable
Expand All @@ -77,6 +92,9 @@ fun DatePickerExamples() {
Text("Docked date picker:")
DatePickerDocked()

Text("Open modal picker on click")
DatePickerFieldToModal()

Text("Modal date pickers:")
Button(onClick = { showModal = true }) {
Text("Show Modal Date Picker")
Expand Down Expand Up @@ -259,6 +277,43 @@ fun DatePickerDocked() {
}
}

@Composable
fun DatePickerFieldToModal(modifier: Modifier = Modifier) {
var selectedDate by remember { mutableStateOf<Long?>(null) }
var showModal by remember { mutableStateOf(false) }

OutlinedTextField(
value = selectedDate?.let { convertMillisToDate(it) } ?: "",
onValueChange = { },
label = { Text("DOB") },
placeholder = { Text("MM/DD/YYYY") },
trailingIcon = {
Icon(Icons.Default.DateRange, contentDescription = "Select date")
},
modifier = modifier
.fillMaxWidth()
.pointerInput(selectedDate) {
awaitEachGesture {
// Modifier.clickable doesn't work for text fields, so we use Modifier.pointerInput
// in the Initial pass to observe events before the text field consumes them
// in the Main pass.
awaitFirstDown(pass = PointerEventPass.Initial)
val upEvent = waitForUpOrCancellation(pass = PointerEventPass.Initial)
if (upEvent != null) {
showModal = true
}
}
}
)

if (showModal) {
DatePickerModal(
onDateSelected = { selectedDate = it },
onDismiss = { showModal = false }
)
}
}

fun convertMillisToDate(millis: Long): String {
val formatter = SimpleDateFormat("MM/dd/yyyy", Locale.getDefault())
return formatter.format(Date(millis))
Expand Down
Loading

0 comments on commit ace0816

Please sign in to comment.