From 8d2300ca1692b3e3ae0b71b00ddbbb5169c4bfdc Mon Sep 17 00:00:00 2001 From: Carmen Alvarez Date: Sun, 13 Apr 2025 23:20:06 +0200 Subject: [PATCH] Make some text items selectable. Make the following text items selectable: * Session details: - Session title - Session description - Speaker name and company - Speaker bio * Speaker details: - Speaker name - Speaker bio --- .../ui/agenda/SessionDetailLayout.kt | 50 +++++++++++-------- .../ui/speakers/SpeakerDetailsScreen.kt | 23 +++++---- 2 files changed, 44 insertions(+), 29 deletions(-) diff --git a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/SessionDetailLayout.kt b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/SessionDetailLayout.kt index 5cc3e574..58f41625 100644 --- a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/SessionDetailLayout.kt +++ b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/agenda/SessionDetailLayout.kt @@ -17,6 +17,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll @@ -204,6 +205,7 @@ private fun SessionDetails( onApplyForAppClinic: () -> Unit, ) { + Column( Modifier .verticalScroll(state = rememberScrollState()) @@ -211,10 +213,12 @@ private fun SessionDetails( .then(modifier) ) { - Text( - text = sessionDetails.session.title, - style = MaterialTheme.typography.headlineLarge - ) + SelectionContainer { + Text( + text = sessionDetails.session.title, + style = MaterialTheme.typography.headlineLarge + ) + } Row( modifier = Modifier.padding(top = 16.dp), @@ -233,12 +237,14 @@ private fun SessionDetails( ) } - Text( - modifier = Modifier.padding(top = 16.dp), - text = sessionDetails.session.description.orEmpty(), - textAlign = TextAlign.Start, - style = MaterialTheme.typography.bodyLarge, - ) + SelectionContainer { + Text( + modifier = Modifier.padding(top = 16.dp), + text = sessionDetails.session.description.orEmpty(), + textAlign = TextAlign.Start, + style = MaterialTheme.typography.bodyLarge, + ) + } if(sessionDetails.session.isAppClinic()) { Button( @@ -385,20 +391,24 @@ private fun Speaker( ) } - Text( - text = speaker.getFullNameAndCompany(), - style = MaterialTheme.typography.titleLarge, - ) - - speaker.bio?.let { bio -> + SelectionContainer { Text( - modifier = Modifier.padding(), - text = bio, - textAlign = TextAlign.Start, - style = MaterialTheme.typography.bodyMedium, + text = speaker.getFullNameAndCompany(), + style = MaterialTheme.typography.titleLarge, ) } + speaker.bio?.let { bio -> + SelectionContainer { + Text( + modifier = Modifier.padding(), + text = bio, + textAlign = TextAlign.Start, + style = MaterialTheme.typography.bodyMedium, + ) + } + } + SocialButtons( speaker = speaker, openLink = openLink diff --git a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailsScreen.kt b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailsScreen.kt index 531a9025..121f042d 100644 --- a/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailsScreen.kt +++ b/shared/ui/src/commonMain/kotlin/com/androidmakers/ui/speakers/SpeakerDetailsScreen.kt @@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.rounded.ArrowBack @@ -110,16 +111,20 @@ fun SpeakerDetailsScreen( ) } - Text( - text = speaker.name.orEmpty(), - style = MaterialTheme.typography.headlineLarge - ) + SelectionContainer { + Text( + text = speaker.name.orEmpty(), + style = MaterialTheme.typography.headlineLarge + ) + } - Text( - text = speaker.bio.orEmpty(), - textAlign = TextAlign.Start, - style = MaterialTheme.typography.bodyLarge, - ) + SelectionContainer { + Text( + text = speaker.bio.orEmpty(), + textAlign = TextAlign.Start, + style = MaterialTheme.typography.bodyLarge, + ) + } SocialButtons( speaker = speaker,