Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
269 changes: 221 additions & 48 deletions docs/components/slider.md

Large diffs are not rendered by default.

14 changes: 10 additions & 4 deletions docs/demo/src/commonMain/kotlin/SliderDemo.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import top.yukonga.miuix.kmp.basic.RangeSlider
import top.yukonga.miuix.kmp.basic.Slider

@Composable
Expand All @@ -39,15 +40,20 @@ fun SliderDemo() {
) {
var slider1 by remember { mutableStateOf(0.5f) }
var slider2 by remember { mutableStateOf(0.7f) }
var slider3 by remember { mutableStateOf(0.2f..0.8f) }
Slider(
progress = slider1,
onProgressChange = { slider1 = it }
value = slider1,
onValueChange = { slider1 = it }
)
Slider(
progress = slider2,
onProgressChange = { slider2 = it },
value = slider2,
onValueChange = { slider2 = it },
enabled = false
)
RangeSlider(
value = slider3,
onValueChange = { slider3 = it }
)
}
}
}
259 changes: 216 additions & 43 deletions docs/zh_CN/components/slider.md

Large diffs are not rendered by default.

305 changes: 284 additions & 21 deletions example/src/commonMain/kotlin/component/OtherComponent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.animation.core.infiniteRepeatable
import androidx.compose.animation.core.rememberInfiniteTransition
import androidx.compose.animation.core.tween
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
Expand All @@ -35,6 +36,7 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import top.yukonga.miuix.kmp.basic.ButtonDefaults
Expand All @@ -47,6 +49,7 @@ import top.yukonga.miuix.kmp.basic.ColorSpace
import top.yukonga.miuix.kmp.basic.Icon
import top.yukonga.miuix.kmp.basic.InfiniteProgressIndicator
import top.yukonga.miuix.kmp.basic.LinearProgressIndicator
import top.yukonga.miuix.kmp.basic.RangeSlider
import top.yukonga.miuix.kmp.basic.Slider
import top.yukonga.miuix.kmp.basic.SliderDefaults
import top.yukonga.miuix.kmp.basic.SmallTitle
Expand All @@ -55,12 +58,13 @@ import top.yukonga.miuix.kmp.basic.TabRowWithContour
import top.yukonga.miuix.kmp.basic.Text
import top.yukonga.miuix.kmp.basic.TextButton
import top.yukonga.miuix.kmp.basic.TextField
import top.yukonga.miuix.kmp.basic.VerticalSlider
import top.yukonga.miuix.kmp.icon.MiuixIcons
import top.yukonga.miuix.kmp.icon.icons.useful.Like
import top.yukonga.miuix.kmp.theme.MiuixTheme
import top.yukonga.miuix.kmp.utils.PressFeedbackType
import top.yukonga.miuix.kmp.utils.toHsv
import top.yukonga.miuix.kmp.utils.toOkLab
import top.yukonga.miuix.kmp.utils.PressFeedbackType
import kotlin.math.round

fun LazyListScope.otherComponent(
Expand Down Expand Up @@ -222,33 +226,292 @@ fun LazyListScope.otherComponent(

item(key = "slider") {
SmallTitle(text = "Slider")
var progress by remember { mutableStateOf(0.5f) }
Slider(
progress = progress,
onProgressChange = { newProgress -> progress = newProgress },
decimalPlaces = 3,
Card(
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
var progressHaptic by remember { mutableStateOf(0.5f) }
Slider(
progress = progressHaptic,
onProgressChange = { newProgress -> progressHaptic = newProgress },
hapticEffect = SliderDefaults.SliderHapticEffect.Step,
.padding(bottom = 6.dp)
) {
var sliderValue by remember { mutableStateOf(0.3f) }
Text(
text = "Normal: ${(sliderValue * 100).toInt()}%",
fontSize = 14.sp,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(top = 12.dp, bottom = 4.dp)
)
Slider(
value = sliderValue,
onValueChange = { sliderValue = it },
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
var stepsValue by remember { mutableStateOf(5f) }
Text(
text = "Steps: ${stepsValue.toInt()}/8",
fontSize = 14.sp,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(top = 12.dp, bottom = 4.dp)
)
Slider(
value = stepsValue,
onValueChange = { stepsValue = it },
valueRange = 0f..8f,
steps = 7,
hapticEffect = SliderDefaults.SliderHapticEffect.Step,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
var stepsWithKeyPointsValue by remember { mutableStateOf(5f) }
Text(
text = "Steps with Key Points: ${stepsWithKeyPointsValue.toInt()}/8",
fontSize = 14.sp,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(top = 12.dp, bottom = 4.dp)
)
Slider(
value = stepsWithKeyPointsValue,
onValueChange = { stepsWithKeyPointsValue = it },
valueRange = 0f..8f,
steps = 7,
hapticEffect = SliderDefaults.SliderHapticEffect.Step,
showKeyPoints = true,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
var customKeyPointsValue by remember { mutableStateOf(25f) }
Text(
text = "Custom Key Points: ${customKeyPointsValue.toInt()}%",
fontSize = 14.sp,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(top = 12.dp, bottom = 4.dp)
)
Slider(
value = customKeyPointsValue,
onValueChange = { customKeyPointsValue = it },
valueRange = 0f..100f,
showKeyPoints = true,
hapticEffect = SliderDefaults.SliderHapticEffect.Step,
keyPoints = listOf(0f, 25f, 50f, 75f, 100f),
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
val disabledValue by remember { mutableStateOf(0.7f) }
Text(
text = "Disabled: ${(disabledValue * 100).toInt()}%",
fontSize = 14.sp,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(top = 12.dp, bottom = 4.dp)
)
Slider(
value = disabledValue,
onValueChange = {},
enabled = false,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
}

// RangeSlider
SmallTitle(text = "RangeSlider")
Card(
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
val progressDisable by remember { mutableStateOf(0.5f) }
Slider(
progress = progressDisable,
onProgressChange = {},
enabled = false,
.padding(bottom = 6.dp)
) {
var rangeValue by remember { mutableStateOf(0.2f..0.8f) }
Text(
text = "Range: ${(rangeValue.start * 100).toInt()}% - ${(rangeValue.endInclusive * 100).toInt()}%",
fontSize = 14.sp,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(top = 12.dp, bottom = 4.dp)
)
RangeSlider(
value = rangeValue,
onValueChange = { rangeValue = it },
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
var rangeStepsValue by remember { mutableStateOf(2f..8f) }
Text(
text = "Range with Key Points: ${rangeStepsValue.start.toInt()} - ${rangeStepsValue.endInclusive.toInt()}",
fontSize = 14.sp,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(top = 12.dp, bottom = 4.dp)
)
RangeSlider(
value = rangeStepsValue,
onValueChange = { rangeStepsValue = it },
valueRange = 0f..8f,
steps = 7,
hapticEffect = SliderDefaults.SliderHapticEffect.Step,
showKeyPoints = true,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
var customRangeValue by remember { mutableStateOf(20f..80f) }
Text(
text = "Custom Range Points: ${customRangeValue.start.toInt()}% - ${customRangeValue.endInclusive.toInt()}%",
fontSize = 14.sp,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(top = 12.dp, bottom = 4.dp)
)
RangeSlider(
value = customRangeValue,
onValueChange = { customRangeValue = it },
valueRange = 0f..100f,
showKeyPoints = true,
hapticEffect = SliderDefaults.SliderHapticEffect.Step,
keyPoints = listOf(0f, 20f, 40f, 60f, 80f, 100f),
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
var disabledRangeValue by remember { mutableStateOf(0.3f..0.7f) }
Text(
text = "Disabled: ${(disabledRangeValue.start * 100).toInt()}% - ${(disabledRangeValue.endInclusive * 100).toInt()}%",
fontSize = 14.sp,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(top = 12.dp, bottom = 4.dp)
)
RangeSlider(
value = disabledRangeValue,
onValueChange = {},
enabled = false,
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 12.dp)
)
}

// VerticalSlider
SmallTitle(text = "VerticalSlider")
Card(
modifier = Modifier
.padding(horizontal = 12.dp)
.padding(bottom = 6.dp)
)
) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 12.dp)
.padding(vertical = 12.dp),
horizontalArrangement = Arrangement.SpaceEvenly,
verticalAlignment = Alignment.CenterVertically
) {
var verticalValue1 by remember { mutableStateOf(0.3f) }
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.weight(1f)
) {
VerticalSlider(
value = verticalValue1,
onValueChange = { verticalValue1 = it },
modifier = Modifier.size(25.dp, 160.dp)
)
Text(
text = "Normal\n${(verticalValue1 * 100).toInt()}%",
fontSize = 12.sp,
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth()
)
}
var verticalValue2 by remember { mutableStateOf(5f) }
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.weight(1f)
) {
VerticalSlider(
value = verticalValue2,
onValueChange = { verticalValue2 = it },
valueRange = 0f..8f,
steps = 7,
hapticEffect = SliderDefaults.SliderHapticEffect.Step,
modifier = Modifier.size(25.dp, 160.dp)
)
Text(
text = "Steps\n${verticalValue2.toInt()}/8",
fontSize = 12.sp,
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth()
)
}
var verticalValue3 by remember { mutableStateOf(5f) }
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.weight(1f)
) {
VerticalSlider(
value = verticalValue3,
onValueChange = { verticalValue3 = it },
valueRange = 0f..8f,
steps = 7,
hapticEffect = SliderDefaults.SliderHapticEffect.Step,
showKeyPoints = true,
modifier = Modifier.size(25.dp, 160.dp)
)
Text(
text = "Points\n${verticalValue3.toInt()}/8",
fontSize = 12.sp,
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth()
)
}
var verticalValue4 by remember { mutableStateOf(50f) }
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.weight(1f)
) {
VerticalSlider(
value = verticalValue4,
onValueChange = { verticalValue4 = it },
valueRange = 0f..100f,
showKeyPoints = true,
hapticEffect = SliderDefaults.SliderHapticEffect.Step,
keyPoints = listOf(0f, 25f, 50f, 75f, 100f),
modifier = Modifier.size(25.dp, 160.dp)
)
Text(
text = "Custom\n${verticalValue4.toInt()}%",
fontSize = 12.sp,
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth()
)
}
val disabledVerticalValue by remember { mutableStateOf(0.7f) }
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.weight(1f)
) {
VerticalSlider(
value = disabledVerticalValue,
onValueChange = {},
enabled = false,
modifier = Modifier.size(25.dp, 160.dp)
)
Text(
text = "Disabled\n${(disabledVerticalValue * 100).toInt()}%",
fontSize = 12.sp,
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth()
)
}
}
}
}

item(key = "tabRow") {
Expand Down
7 changes: 3 additions & 4 deletions example/src/commonMain/kotlin/component/TextComponent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -510,11 +510,10 @@ fun BottomSheet(
) {
LazyColumn {
item {
var progress by remember { mutableStateOf(0.5f) }
var sliderValue by remember { mutableStateOf(0.5f) }
Slider(
progress = progress,
onProgressChange = { newProgress -> progress = newProgress },
decimalPlaces = 3,
value = sliderValue,
onValueChange = { sliderValue = it },
modifier = Modifier.padding(bottom = 12.dp)
)
Card(
Expand Down
Loading
Loading