Skip to content

Commit 345a3f8

Browse files
committed
chore: allow previews of components with defined shared{Element/Bounds}Transition
Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent 5c608c0 commit 345a3f8

6 files changed

Lines changed: 44 additions & 19 deletions

File tree

apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/ui/App.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ import com.getcode.ui.components.OnLifecycleEvent
6363
import com.getcode.ui.components.bars.rememberBarManager
6464
import com.getcode.ui.core.RestrictionType
6565
import com.flipcash.app.core.extensions.navigateTo
66-
import com.getcode.navigation.animation.LocalSharedTransitionScope
66+
import com.getcode.animation.LocalSharedTransitionScope
6767
import com.getcode.navigation.scrim.LocalScrimController
6868
import com.getcode.navigation.scrim.ScrimController
6969
import com.getcode.navigation.scrim.ScrimOverlay

apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/ui/transitions/SharedTransitions.kt

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,16 @@ import androidx.compose.animation.core.spring
1919
import androidx.compose.animation.fadeIn
2020
import androidx.compose.animation.fadeOut
2121
import androidx.compose.runtime.Composable
22-
import androidx.compose.runtime.compositionLocalOf
23-
import androidx.compose.runtime.staticCompositionLocalOf
2422
import androidx.compose.ui.Alignment.Companion.Center
2523
import androidx.compose.ui.Modifier
2624
import androidx.compose.ui.geometry.Rect
2725
import androidx.compose.ui.graphics.Path
2826
import androidx.compose.ui.layout.ContentScale
27+
import androidx.compose.ui.platform.LocalInspectionMode
2928
import androidx.compose.ui.unit.Density
3029
import androidx.compose.ui.unit.LayoutDirection
3130
import androidx.navigation3.ui.LocalNavAnimatedContentScope
32-
import com.getcode.navigation.animation.LocalSharedTransitionScope
31+
import com.getcode.animation.LocalSharedTransitionScope
3332

3433
sealed class SharedTransition(
3534
val key: String,
@@ -84,7 +83,7 @@ val CircleOverlayClip: OverlayClip =
8483
@Composable
8584
fun Modifier.sharedBoundsTransition(
8685
key: String,
87-
animatedVisibilityScope: AnimatedVisibilityScope = LocalNavAnimatedContentScope.current,
86+
animatedVisibilityScope: AnimatedVisibilityScope? = null,
8887
sharedTransitionScope: SharedTransitionScope = LocalSharedTransitionScope.current,
8988
enter: EnterTransition = fadeIn(),
9089
exit: ExitTransition = fadeOut(),
@@ -95,12 +94,18 @@ fun Modifier.sharedBoundsTransition(
9594
placeholderSize: PlaceholderSize = AnimatedSize,
9695
clipInOverlayDuringTransition: OverlayClip = ParentClip,
9796
): Modifier {
97+
if(LocalInspectionMode.current) {
98+
return this
99+
}
100+
101+
val animatedScope = animatedVisibilityScope ?: LocalNavAnimatedContentScope.current
102+
98103
return with(sharedTransitionScope) {
99104
this@sharedBoundsTransition.sharedBounds(
100105
sharedContentState = rememberSharedContentState(key = key),
101106
enter = enter,
102107
exit = exit,
103-
animatedVisibilityScope = animatedVisibilityScope,
108+
animatedVisibilityScope = animatedScope,
104109
boundsTransform = boundsTransform,
105110
renderInOverlayDuringTransition = renderInOverlayDuringTransition,
106111
resizeMode = resizeMode,
@@ -114,7 +119,7 @@ fun Modifier.sharedBoundsTransition(
114119
@Composable
115120
fun Modifier.sharedBoundsTransition(
116121
transition: SharedTransition,
117-
animatedVisibilityScope: AnimatedVisibilityScope = LocalNavAnimatedContentScope.current,
122+
animatedVisibilityScope: AnimatedVisibilityScope? = null,
118123
sharedTransitionScope: SharedTransitionScope = LocalSharedTransitionScope.current,
119124
zIndexInOverlay: Float = 0f,
120125
renderInOverlayDuringTransition: Boolean = true,
@@ -139,17 +144,23 @@ fun Modifier.sharedBoundsTransition(
139144
@Composable
140145
fun Modifier.sharedElementTransition(
141146
key: String,
142-
animatedVisibilityScope: AnimatedVisibilityScope = LocalNavAnimatedContentScope.current,
147+
animatedVisibilityScope: AnimatedVisibilityScope? = null,
143148
sharedTransitionScope: SharedTransitionScope = LocalSharedTransitionScope.current,
144149
boundsTransform: BoundsTransform = DefaultTransform,
145150
placeholderSize: PlaceholderSize = AnimatedSize,
146151
zIndexInOverlay: Float = 0f,
147152
renderInOverlayDuringTransition: Boolean = true,
148153
): Modifier {
154+
if(LocalInspectionMode.current) {
155+
return this
156+
}
157+
158+
val animatedScope = animatedVisibilityScope ?: LocalNavAnimatedContentScope.current
159+
149160
return with(sharedTransitionScope) {
150161
this@sharedElementTransition.sharedElement(
151162
sharedContentState = rememberSharedContentState(key = key),
152-
animatedVisibilityScope = animatedVisibilityScope,
163+
animatedVisibilityScope = animatedScope,
153164
boundsTransform = boundsTransform,
154165
placeholderSize = placeholderSize,
155166
zIndexInOverlay = zIndexInOverlay,
@@ -161,7 +172,7 @@ fun Modifier.sharedElementTransition(
161172
@Composable
162173
fun Modifier.sharedElementTransition(
163174
transition: SharedTransition,
164-
animatedVisibilityScope: AnimatedVisibilityScope = LocalNavAnimatedContentScope.current,
175+
animatedVisibilityScope: AnimatedVisibilityScope? = null,
165176
boundsTransform: BoundsTransform? = null,
166177
sharedTransitionScope: SharedTransitionScope = LocalSharedTransitionScope.current,
167178
placeholderSize: PlaceholderSize = AnimatedSize,
@@ -190,6 +201,10 @@ fun Modifier.sharedElementTransitionWithCallerManagedVisibility(
190201
renderInOverlayDuringTransition: Boolean = true,
191202
clipInOverlayDuringTransition: OverlayClip = ParentClip,
192203
): Modifier {
204+
if(LocalInspectionMode.current) {
205+
return this
206+
}
207+
193208
return with(sharedTransitionScope) {
194209
this@sharedElementTransitionWithCallerManagedVisibility.sharedElementWithCallerManagedVisibility(
195210
sharedContentState = rememberSharedContentState(key = key),

apps/flipcash/features/currency-creator/src/main/kotlin/com/flipcash/app/currencycreator/internal/screens/DescriptionSelectionScreen.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ internal fun DescriptionSelectionContent(
172172
)
173173

174174
Text(
175+
modifier = Modifier
176+
.fillMaxWidth(0.65f),
175177
text = stringResource(R.string.title_currencyCreatorDescription),
176178
style = CodeTheme.typography.textLarge,
177179
color = CodeTheme.colors.textMain,

apps/flipcash/shared/theme/src/main/kotlin/com/flipcash/app/theme/FlipcashPreview.kt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package com.flipcash.app.theme
22

3+
import androidx.compose.animation.SharedTransitionLayout
34
import androidx.compose.foundation.background
45
import androidx.compose.foundation.layout.Box
56
import androidx.compose.foundation.layout.wrapContentSize
67
import androidx.compose.runtime.Composable
8+
import androidx.compose.runtime.CompositionLocalProvider
79
import androidx.compose.ui.Modifier
810
import androidx.compose.ui.graphics.Color
11+
import com.getcode.animation.LocalSharedTransitionScope
912
import com.flipcash.app.theme.internal.Flipcash2DesignSystem
1013
import com.flipcash.app.theme.internal.FlipcashLegacyDesignSystem
1114
import com.getcode.theme.CodeTheme
@@ -17,12 +20,18 @@ fun FlipcashPreview(
1720
content: @Composable () -> Unit
1821
) {
1922
val previewContent = @Composable {
20-
Box(
21-
modifier = Modifier
22-
.wrapContentSize()
23-
.background(if (showBackground) CodeTheme.colors.background else Color.Transparent)
24-
) {
25-
content()
23+
SharedTransitionLayout {
24+
CompositionLocalProvider(
25+
LocalSharedTransitionScope provides this,
26+
) {
27+
Box(
28+
modifier = Modifier
29+
.wrapContentSize()
30+
.background(if (showBackground) CodeTheme.colors.background else Color.Transparent)
31+
) {
32+
content()
33+
}
34+
}
2635
}
2736
}
2837

ui/navigation/src/main/kotlin/com/getcode/navigation/scenes/ModalBottomSheetSceneStrategy.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.getcode.navigation.scenes
33
import android.os.Build
44
import android.os.Parcelable
55
import androidx.compose.animation.SharedTransitionLayout
6-
import androidx.compose.foundation.LocalOverscrollFactory
76
import androidx.compose.foundation.layout.Box
87
import androidx.compose.foundation.layout.WindowInsets
98
import androidx.compose.foundation.layout.fillMaxHeight
@@ -34,8 +33,8 @@ import androidx.navigation3.scene.OverlayScene
3433
import androidx.navigation3.scene.Scene
3534
import androidx.navigation3.scene.SceneStrategy
3635
import androidx.navigation3.scene.SceneStrategyScope
36+
import com.getcode.animation.LocalSharedTransitionScope
3737
import com.getcode.navigation.NavMetadataKeys
38-
import com.getcode.navigation.animation.LocalSharedTransitionScope
3938
import com.getcode.navigation.core.CodeNavigator
4039
import com.getcode.navigation.core.LocalCodeNavigator
4140
import com.getcode.navigation.results.NavResultKey

ui/navigation/src/main/kotlin/com/getcode/navigation/animation/SharedTransitionScope.kt renamed to ui/theme/src/main/kotlin/com/getcode/animation/SharedTransitionScope.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.getcode.navigation.animation
1+
package com.getcode.animation
22

33
import androidx.compose.animation.SharedTransitionScope
44
import androidx.compose.runtime.staticCompositionLocalOf

0 commit comments

Comments
 (0)