From f9d6018bdef15629c675767e2fbe3cfd19922883 Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Thu, 12 Oct 2023 12:27:27 +0300 Subject: [PATCH] Update UnitSelectionButton --- .../unitto/core/ui/common/UnittoButton.kt | 83 ------------------- .../components/UnitSelectionButton.kt | 23 +++-- 2 files changed, 17 insertions(+), 89 deletions(-) delete mode 100644 core/ui/src/main/java/com/sadellie/unitto/core/ui/common/UnittoButton.kt diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/UnittoButton.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/UnittoButton.kt deleted file mode 100644 index 5890bc65..00000000 --- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/UnittoButton.kt +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Unitto is a unit converter for Android - * Copyright (c) 2023 Elshan Agaev - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sadellie.unitto.core.ui.common - -import androidx.compose.foundation.BorderStroke -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.RowScope -import androidx.compose.foundation.layout.defaultMinSize -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.LocalContentColor -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.ProvideTextStyle -import androidx.compose.material3.Surface -import androidx.compose.material3.contentColorFor -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color - -@Composable -fun UnittoButton( - modifier: Modifier = Modifier, - onClick: () -> Unit, - onLongClick: (() -> Unit)? = null, - enabled: Boolean = true, - containerColor: Color, - contentColor: Color = contentColorFor(containerColor), - border: BorderStroke? = null, - contentPadding: PaddingValues = ButtonDefaults.ContentPadding, - interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, - content: @Composable RowScope.() -> Unit -) { - Surface( - modifier = modifier.squashable( - onClick = onClick, - onLongClick = onLongClick, - interactionSource = interactionSource, - cornerRadiusRange = 30..50, - enabled = enabled - ), - color = containerColor, - contentColor = contentColor, - border = border, - ) { - CompositionLocalProvider(LocalContentColor provides contentColor) { - ProvideTextStyle(value = MaterialTheme.typography.labelLarge) { - Row( - Modifier - .defaultMinSize( - minWidth = ButtonDefaults.MinWidth, - minHeight = ButtonDefaults.MinHeight - ) - .padding(contentPadding), - horizontalArrangement = Arrangement.Center, - verticalAlignment = Alignment.CenterVertically, - content = content - ) - } - } - } -} diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt index 8d9a31eb..5eae17ab 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt @@ -26,15 +26,18 @@ import androidx.compose.animation.fadeOut import androidx.compose.animation.slideInVertically import androidx.compose.animation.slideOutVertically import androidx.compose.animation.togetherWith +import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.PaddingValues import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import com.sadellie.unitto.core.ui.common.UnittoButton +import com.sadellie.unitto.core.ui.common.squashable /** * Button to select a unit @@ -51,22 +54,30 @@ internal fun UnitSelectionButton( label: String, enabled: Boolean = true ) { - UnittoButton( - modifier = modifier, + val interactionSource = remember { MutableInteractionSource() } + + Button( + modifier = modifier.squashable( + onClick = onClick, + onLongClick = null, + interactionSource = interactionSource, + cornerRadiusRange = 30..50, + enabled = enabled + ), onClick = onClick, enabled = enabled, - containerColor = MaterialTheme.colorScheme.primaryContainer, contentPadding = PaddingValues(vertical = 16.dp, horizontal = 8.dp), + colors = ButtonDefaults.buttonColors(containerColor = MaterialTheme.colorScheme.primaryContainer) ) { AnimatedContent( targetState = label, transitionSpec = { if (targetState > initialState) { (slideInVertically { height -> height } + fadeIn()) togetherWith - slideOutVertically { height -> -height } + fadeOut() + slideOutVertically { height -> -height } + fadeOut() } else { (slideInVertically { height -> -height } + fadeIn()) togetherWith - slideOutVertically { height -> height } + fadeOut() + slideOutVertically { height -> height } + fadeOut() }.using( SizeTransform(clip = false) )