Skip to content

Commit ba9aa27

Browse files
authored
Merge pull request #781 from microsoft/dhruvMishra/restoringShimmerTokens
Restored Shimmer Tokens
2 parents 1654d5f + acee125 commit ba9aa27

File tree

3 files changed

+39
-6
lines changed
  • FluentUI.Demo/src/main/java/com/microsoft/fluentuidemo/demos
  • fluentui_core/src/main/java/com/microsoft/fluentui/theme/token/controlTokens
  • fluentui_progress/src/main/java/com/microsoft/fluentui/tokenized/shimmer

3 files changed

+39
-6
lines changed

FluentUI.Demo/src/main/java/com/microsoft/fluentuidemo/demos/V2ShimmerActivity.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,17 @@ class V2ShimmerActivity : V2DemoActivity() {
8585
private fun CreateShimmerActivityUI() {
8686
var shimmerOrientation by rememberSaveable { mutableStateOf(0) }
8787
var isShimmering by rememberSaveable { mutableStateOf(true) }
88-
val shimmerTokens = ShimmerTokens()
88+
val shimmerTokens = object: ShimmerTokens(){
89+
@Composable
90+
override fun delay(shimmerInfo: ShimmerInfo): Int {
91+
return 1000
92+
}
93+
94+
@Composable
95+
override fun orientation(shimmerInfo: ShimmerInfo): ShimmerOrientation {
96+
return getShimmerOrientation(shimmerOrientation)
97+
}
98+
}
8999
Column(
90100
Modifier
91101
.padding(all = 12.dp)

fluentui_core/src/main/java/com/microsoft/fluentui/theme/token/controlTokens/ShimmerTokens.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ enum class ShimmerOrientation {
1515
LEFT_TO_RIGHT,
1616
RIGHT_TO_LEFT,
1717
TOPLEFT_TO_BOTTOMRIGHT,
18-
BOTTOMRIGHT_TO_TOPLEFT
18+
BOTTOMRIGHT_TO_TOPLEFT,
19+
_NONE //DO NOT USE
1920
}
2021

2122
@Parcelize
@@ -33,4 +34,14 @@ open class ShimmerTokens : IControlToken, Parcelable {
3334
themeMode = FluentTheme.themeMode
3435
)
3536
}
37+
38+
@Composable
39+
open fun delay(shimmerInfo: ShimmerInfo): Int {
40+
return -1
41+
}
42+
43+
@Composable
44+
open fun orientation(shimmerInfo: ShimmerInfo): ShimmerOrientation {
45+
return ShimmerOrientation._NONE //Do not return ShimmerOrientation._NONE if you are overriding this method, it will default to ShimmerOrientation.TOPLEFT_TO_BOTTOMRIGHT in that case
46+
}
3647
}

fluentui_progress/src/main/java/com/microsoft/fluentui/tokenized/shimmer/Shimmer.kt

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,18 @@ internal fun InternalShimmer(
101101
val diagonal =
102102
sqrt((screenHeight * screenHeight + screenWidth * screenWidth).toDouble()).toFloat()
103103
val shimmerInfo = ShimmerInfo()
104+
val cachedDelay = tokens.delay(shimmerInfo)
105+
val shimmerDelayValue = if (cachedDelay != -1) {
106+
cachedDelay
107+
} else {
108+
shimmerDelay
109+
}
110+
val tokenOrientation = tokens.orientation(shimmerInfo)
111+
val orientation: ShimmerOrientation = if(tokenOrientation != ShimmerOrientation._NONE){
112+
tokenOrientation
113+
} else {
114+
shimmerOrientation
115+
}
104116
val shimmerBackgroundColor = if (content != null) {
105117
Color.Transparent
106118
} else {
@@ -110,7 +122,7 @@ internal fun InternalShimmer(
110122
val cornerRadius =
111123
dpToPx(cornerRadius)
112124
val infiniteTransition = rememberInfiniteTransition()
113-
val isLtr = if (shimmerOrientation in listOf(
125+
val isLtr = if (orientation in listOf(
114126
ShimmerOrientation.LEFT_TO_RIGHT,
115127
ShimmerOrientation.TOPLEFT_TO_BOTTOMRIGHT
116128
)
@@ -124,7 +136,7 @@ internal fun InternalShimmer(
124136
targetValue,
125137
infiniteRepeatable(
126138
animation = tween(
127-
durationMillis = shimmerDelay,
139+
durationMillis = shimmerDelayValue,
128140
easing = LinearEasing
129141
),
130142
repeatMode = RepeatMode.Restart
@@ -135,15 +147,15 @@ internal fun InternalShimmer(
135147
remember { mutableFloatStateOf(0f) }
136148
}
137149

138-
val startOffset: Offset = when (shimmerOrientation) {
150+
val startOffset: Offset = when (orientation) {
139151
ShimmerOrientation.LEFT_TO_RIGHT -> Offset.Zero
140152
ShimmerOrientation.RIGHT_TO_LEFT -> Offset.Zero
141153
ShimmerOrientation.TOPLEFT_TO_BOTTOMRIGHT -> Offset.Zero
142154
ShimmerOrientation.BOTTOMRIGHT_TO_TOPLEFT -> Offset.Zero
143155
else -> Offset.Zero
144156
}
145157
val endOffset: Offset = if (isShimmering) {
146-
when (shimmerOrientation) {
158+
when (orientation) {
147159
ShimmerOrientation.LEFT_TO_RIGHT -> Offset(shimmerEffect.absoluteValue, 0F)
148160
ShimmerOrientation.RIGHT_TO_LEFT -> Offset(shimmerEffect.absoluteValue, 0F)
149161
ShimmerOrientation.TOPLEFT_TO_BOTTOMRIGHT -> Offset(shimmerEffect.absoluteValue, shimmerEffect.absoluteValue)

0 commit comments

Comments
 (0)