refactor: merge custom paddings to PaddingValues

This commit is contained in:
2023-11-27 02:55:42 +08:00
parent 4128fa5505
commit f4a67c6829
7 changed files with 99 additions and 152 deletions

View File

@@ -30,6 +30,7 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@@ -55,15 +56,12 @@ import com.highcapable.flexiui.utils.borderOrNot
@Immutable @Immutable
data class AreaBoxStyle( data class AreaBoxStyle(
val paddings: AreaBoxPaddings, val padding: PaddingValues,
val shape: Shape, val shape: Shape,
val border: BorderStroke, val border: BorderStroke,
val shadowSize: Dp val shadowSize: Dp
) )
@Immutable
data class AreaBoxPaddings(val start: Dp, val top: Dp, val end: Dp, val bottom: Dp)
@Composable @Composable
fun AreaBox( fun AreaBox(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
@@ -145,12 +143,7 @@ private fun Modifier.areaBox(
.background(color, style.shape) .background(color, style.shape)
.borderOrNot(style.border, style.shape) .borderOrNot(style.border, style.shape)
.then(then) .then(then)
.padding( .padding(style.padding)
start = style.paddings.start,
top = style.paddings.top,
end = style.paddings.end,
bottom = style.paddings.bottom
)
} }
object AreaBox { object AreaBox {
@@ -173,12 +166,7 @@ internal val DefaultAreaBoxShape: Shape = DefaultShapes.primary
@Composable @Composable
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultAreaBoxStyle() = AreaBoxStyle( private fun defaultAreaBoxStyle() = AreaBoxStyle(
paddings = AreaBoxPaddings( padding = PaddingValues(LocalSizes.current.spacingPrimary),
start = defaultAreaBoxPadding(),
top = defaultAreaBoxPadding(),
end = defaultAreaBoxPadding(),
bottom = defaultAreaBoxPadding()
),
shape = LocalShapes.current.primary, shape = LocalShapes.current.primary,
border = defaultAreaBoxBorder(), border = defaultAreaBoxBorder(),
shadowSize = DefaultAreaBoxShadowSize shadowSize = DefaultAreaBoxShadowSize
@@ -192,8 +180,4 @@ private fun defaultAreaBoxColor() = LocalColors.current.foregroundPrimary
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultAreaBoxBorder() = BorderStroke(LocalSizes.current.borderSizeTertiary, LocalColors.current.textPrimary) private fun defaultAreaBoxBorder() = BorderStroke(LocalSizes.current.borderSizeTertiary, LocalColors.current.textPrimary)
@Composable
@ReadOnlyComposable
private fun defaultAreaBoxPadding() = LocalSizes.current.spacingPrimary
private val DefaultAreaBoxShadowSize = 0.dp private val DefaultAreaBoxShadowSize = 0.dp

View File

@@ -27,6 +27,7 @@ import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@@ -43,8 +44,6 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalShapes import com.highcapable.flexiui.LocalShapes
import com.highcapable.flexiui.LocalSizes import com.highcapable.flexiui.LocalSizes
@@ -63,14 +62,11 @@ data class ButtonColors(
@Immutable @Immutable
data class ButtonStyle( data class ButtonStyle(
val paddings: ButtonPaddings, val padding: PaddingValues,
val shape: Shape, val shape: Shape,
val border: BorderStroke val border: BorderStroke
) )
@Immutable
data class ButtonPaddings(val start: Dp, val top: Dp, val end: Dp, val bottom: Dp)
@Composable @Composable
fun Button( fun Button(
onClick: () -> Unit, onClick: () -> Unit,
@@ -108,7 +104,7 @@ fun Button(
LocalProgressIndicatorColors provides localProgressIndicatorColors LocalProgressIndicatorColors provides localProgressIndicatorColors
) { ) {
Row( Row(
modifier = Modifier.buttonPadding(style), modifier = Modifier.padding(style.padding),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
header() header()
@@ -142,7 +138,7 @@ fun IconButton(
role = Role.Button, role = Role.Button,
interactionSource = interactionSource, interactionSource = interactionSource,
onClick = onClick onClick = onClick
).buttonPadding(style), ).padding(style.padding),
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { CompositionLocalProvider(LocalIconTint provides colors.contentColor, content = content) } ) { CompositionLocalProvider(LocalIconTint provides colors.contentColor, content = content) }
} }
@@ -172,7 +168,7 @@ fun IconToggleButton(
enabled = enabled, enabled = enabled,
role = Role.Checkbox, role = Role.Checkbox,
interactionSource = interactionSource interactionSource = interactionSource
).buttonPadding(style), ).padding(style.padding),
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { CompositionLocalProvider(LocalIconTint provides colors.contentColor, content = content) } ) { CompositionLocalProvider(LocalIconTint provides colors.contentColor, content = content) }
} }
@@ -190,13 +186,6 @@ private fun Modifier.button(
.then(then) .then(then)
} }
private fun Modifier.buttonPadding(style: ButtonStyle) = padding(
start = style.paddings.start,
top = style.paddings.top,
end = style.paddings.end,
bottom = style.paddings.bottom
)
object Button { object Button {
val colors: ButtonColors val colors: ButtonColors
@Composable @Composable
@@ -249,11 +238,9 @@ private fun defaultIconButtonColors() = ButtonColors(
@Composable @Composable
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultButtonStyle() = ButtonStyle( private fun defaultButtonStyle() = ButtonStyle(
paddings = ButtonPaddings( padding = PaddingValues(
start = LocalSizes.current.spacingPrimary, horizontal = LocalSizes.current.spacingPrimary,
top = LocalSizes.current.spacingSecondary, vertical = LocalSizes.current.spacingSecondary
end = LocalSizes.current.spacingPrimary,
bottom = LocalSizes.current.spacingSecondary
), ),
shape = when (LocalInAreaBox.current) { shape = when (LocalInAreaBox.current) {
true -> LocalAreaBoxShape.current true -> LocalAreaBoxShape.current
@@ -265,7 +252,7 @@ private fun defaultButtonStyle() = ButtonStyle(
@Composable @Composable
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultIconButtonStyle() = ButtonStyle( private fun defaultIconButtonStyle() = ButtonStyle(
paddings = ButtonPaddings(0.dp, 0.dp, 0.dp, 0.dp), padding = PaddingValues(),
shape = CircleShape, shape = CircleShape,
border = defaultButtonBorder() border = defaultButtonBorder()
) )

View File

@@ -46,6 +46,7 @@ import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.BoxWithConstraintsScope
import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
@@ -108,6 +109,7 @@ import com.highcapable.flexiui.interaction.rippleClickable
import com.highcapable.flexiui.resources.Icons import com.highcapable.flexiui.resources.Icons
import com.highcapable.flexiui.resources.icon.Dropdown import com.highcapable.flexiui.resources.icon.Dropdown
import com.highcapable.flexiui.utils.borderOrNot import com.highcapable.flexiui.utils.borderOrNot
import com.highcapable.flexiui.utils.horizontal
import com.highcapable.flexiui.utils.orElse import com.highcapable.flexiui.utils.orElse
import com.highcapable.flexiui.utils.solidColor import com.highcapable.flexiui.utils.solidColor
import com.highcapable.flexiui.utils.status import com.highcapable.flexiui.utils.status
@@ -132,7 +134,7 @@ data class DropdownMenuColors(
@Immutable @Immutable
data class DropdownListStyle( data class DropdownListStyle(
val paddings: DropdownListPaddings, val padding: PaddingValues,
val shape: Shape, val shape: Shape,
val endIconSize: Dp, val endIconSize: Dp,
val borderInactive: BorderStroke, val borderInactive: BorderStroke,
@@ -147,9 +149,6 @@ data class DropdownMenuStyle(
val borderStyle: AreaBoxStyle val borderStyle: AreaBoxStyle
) )
@Immutable
data class DropdownListPaddings(val start: Dp, val top: Dp, val end: Dp, val bottom: Dp)
@Composable @Composable
fun DropdownList( fun DropdownList(
expanded: Boolean, expanded: Boolean,
@@ -204,7 +203,7 @@ fun DropdownList(
} }
) )
) { ) {
val menuMaxWidth = maxWidth + style.paddings.start + style.paddings.end val menuMaxWidth = maxWidth + style.padding.horizontal
// Note: If minWidth is not 0, a constant width is currently set. // Note: If minWidth is not 0, a constant width is currently set.
// At this time, the child layout must be completely filled into the parent layout. // At this time, the child layout must be completely filled into the parent layout.
val needInflatable = minWidth > 0.dp val needInflatable = minWidth > 0.dp
@@ -427,12 +426,7 @@ private fun Modifier.dropdownList(
.background(colors.backgroundColor, style.shape) .background(colors.backgroundColor, style.shape)
.borderOrNot(border, style.shape) .borderOrNot(border, style.shape)
.then(then) .then(then)
.padding( .padding(style.padding)
start = style.paddings.start,
top = style.paddings.top,
end = style.paddings.end,
bottom = style.paddings.bottom
)
} }
private fun calculateTransformOrigin(parentBounds: IntRect, menuBounds: IntRect): TransformOrigin { private fun calculateTransformOrigin(parentBounds: IntRect, menuBounds: IntRect): TransformOrigin {
@@ -563,12 +557,7 @@ private fun defaultDropdownMenuColors() = DropdownMenuColors(
@Composable @Composable
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultDropdownListStyle() = DropdownListStyle( private fun defaultDropdownListStyle() = DropdownListStyle(
paddings = DropdownListPaddings( padding = PaddingValues(LocalSizes.current.spacingSecondary),
start = defaultDropdownListPadding(),
top = defaultDropdownListPadding(),
end = defaultDropdownListPadding(),
bottom = defaultDropdownListPadding()
),
shape = when (LocalInAreaBox.current) { shape = when (LocalInAreaBox.current) {
true -> LocalAreaBoxShape.current true -> LocalAreaBoxShape.current
else -> LocalShapes.current.secondary else -> LocalShapes.current.secondary
@@ -584,21 +573,11 @@ private fun defaultDropdownMenuStyle() = DropdownMenuStyle(
inTransitionDuration = DefaultInTransitionDuration, inTransitionDuration = DefaultInTransitionDuration,
outTransitionDuration = DefaultOutTransitionDuration, outTransitionDuration = DefaultOutTransitionDuration,
contentStyle = AreaBox.style.copy( contentStyle = AreaBox.style.copy(
paddings = AreaBoxPaddings( padding = PaddingValues(horizontal = DefaultMenuContentPadding),
start = DefaultMenuContentPadding,
top = 0.dp,
end = DefaultMenuContentPadding,
bottom = 0.dp
),
shape = LocalShapes.current.secondary shape = LocalShapes.current.secondary
), ),
borderStyle = AreaBox.style.copy( borderStyle = AreaBox.style.copy(
paddings = AreaBoxPaddings( padding = PaddingValues(LocalSizes.current.spacingTertiary),
start = defaultDropdownListBorderPadding(),
top = defaultDropdownListBorderPadding(),
end = defaultDropdownListBorderPadding(),
bottom = defaultDropdownListBorderPadding()
),
shadowSize = LocalSizes.current.zoomSizeTertiary, shadowSize = LocalSizes.current.zoomSizeTertiary,
shape = LocalShapes.current.primary shape = LocalShapes.current.primary
) )
@@ -612,14 +591,6 @@ private fun defaultDropdownListInactiveBorder() = BorderStroke(LocalSizes.curren
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultDropdownListActiveBorder() = BorderStroke(LocalSizes.current.borderSizePrimary, LocalColors.current.themePrimary) private fun defaultDropdownListActiveBorder() = BorderStroke(LocalSizes.current.borderSizePrimary, LocalColors.current.themePrimary)
@Composable
@ReadOnlyComposable
private fun defaultDropdownListPadding() = LocalSizes.current.spacingSecondary
@Composable
@ReadOnlyComposable
private fun defaultDropdownListBorderPadding() = LocalSizes.current.spacingTertiary
private val DefaultDropdownListMenuOffset = DpOffset((-10).dp, 10.dp) private val DefaultDropdownListMenuOffset = DpOffset((-10).dp, 10.dp)
private val DefaultMenuContentPadding = 16.dp private val DefaultMenuContentPadding = 16.dp

View File

@@ -26,6 +26,7 @@ package com.highcapable.flexiui.component
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
@@ -34,7 +35,6 @@ import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.composed import androidx.compose.ui.composed
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp
import com.highcapable.flexiui.LocalColors import com.highcapable.flexiui.LocalColors
import com.highcapable.flexiui.LocalSizes import com.highcapable.flexiui.LocalSizes
@@ -46,20 +46,12 @@ data class SurfaceColors(
val backgroundColor: Color val backgroundColor: Color
) )
@Immutable
data class SurfaceStyle(
val paddings: SurfacePaddings
)
@Immutable
data class SurfacePaddings(val start: Dp, val top: Dp, val end: Dp, val bottom: Dp)
@Composable @Composable
fun Surface( fun Surface(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
initializer: Modifier.() -> Modifier = { Modifier }, initializer: Modifier.() -> Modifier = { Modifier },
colors: SurfaceColors = Surface.colors, colors: SurfaceColors = Surface.colors,
style: SurfaceStyle = Surface.style, padding: PaddingValues = Surface.padding,
content: @Composable BoxScope.() -> Unit content: @Composable BoxScope.() -> Unit
) { ) {
CompositionLocalProvider( CompositionLocalProvider(
@@ -67,24 +59,19 @@ fun Surface(
backgroundPrimary = colors.backgroundColor, backgroundPrimary = colors.backgroundColor,
textPrimary = colors.contentColor textPrimary = colors.contentColor
) )
) { Box(Modifier.surface(colors, style, modifier, initializer), content = content) } ) { Box(Modifier.surface(colors, padding, modifier, initializer), content = content) }
} }
private fun Modifier.surface( private fun Modifier.surface(
colors: SurfaceColors, colors: SurfaceColors,
style: SurfaceStyle, padding: PaddingValues,
then: Modifier, then: Modifier,
initializer: Modifier.() -> Modifier initializer: Modifier.() -> Modifier
) = composed { ) = composed {
initializer() initializer()
.background(colors.backgroundColor) .background(colors.backgroundColor)
.then(then) .then(then)
.padding( .padding(padding)
start = style.paddings.start,
top = style.paddings.top,
end = style.paddings.end,
bottom = style.paddings.bottom
)
} }
object Surface { object Surface {
@@ -92,10 +79,10 @@ object Surface {
@Composable @Composable
@ReadOnlyComposable @ReadOnlyComposable
get() = defaultSurfaceColors() get() = defaultSurfaceColors()
val style: SurfaceStyle val padding: PaddingValues
@Composable @Composable
@ReadOnlyComposable @ReadOnlyComposable
get() = defaultSurfaceStyle() get() = defaultSurfacePadding()
} }
@Composable @Composable
@@ -107,15 +94,4 @@ private fun defaultSurfaceColors() = SurfaceColors(
@Composable @Composable
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultSurfaceStyle() = SurfaceStyle( private fun defaultSurfacePadding() = PaddingValues(LocalSizes.current.spacingPrimary)
paddings = SurfacePaddings(
start = defaultSurfacePaddings(),
top = defaultSurfacePaddings(),
end = defaultSurfacePaddings(),
bottom = defaultSurfacePaddings()
)
)
@Composable
@ReadOnlyComposable
private fun defaultSurfacePaddings() = LocalSizes.current.spacingPrimary

View File

@@ -37,6 +37,7 @@ import androidx.compose.foundation.interaction.collectIsPressedAsState
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@@ -92,6 +93,8 @@ import com.highcapable.flexiui.resources.icon.Backspace
import com.highcapable.flexiui.resources.icon.ViewerClose import com.highcapable.flexiui.resources.icon.ViewerClose
import com.highcapable.flexiui.resources.icon.ViewerOpen import com.highcapable.flexiui.resources.icon.ViewerOpen
import com.highcapable.flexiui.utils.borderOrNot import com.highcapable.flexiui.utils.borderOrNot
import com.highcapable.flexiui.utils.calculateEnd
import com.highcapable.flexiui.utils.calculateStart
import com.highcapable.flexiui.utils.orElse import com.highcapable.flexiui.utils.orElse
import com.highcapable.flexiui.utils.solidColor import com.highcapable.flexiui.utils.solidColor
import com.highcapable.flexiui.utils.status import com.highcapable.flexiui.utils.status
@@ -116,7 +119,7 @@ data class AutoCompleteBoxColors(
@Immutable @Immutable
data class TextFieldStyle( data class TextFieldStyle(
val paddings: TextFieldPaddings, val padding: PaddingValues,
val shape: Shape, val shape: Shape,
val borderInactive: BorderStroke, val borderInactive: BorderStroke,
val borderActive: BorderStroke, val borderActive: BorderStroke,
@@ -131,9 +134,6 @@ data class AutoCompleteOptions(
val threshold: Int = 2 val threshold: Int = 2
) )
@Immutable
data class TextFieldPaddings(val start: Dp, val top: Dp, val end: Dp, val bottom: Dp)
@Composable @Composable
fun TextField( fun TextField(
value: TextFieldValue, value: TextFieldValue,
@@ -365,7 +365,7 @@ fun PasswordTextField(
if (value.text.isEmpty() && animatedSize == 0.dp) passwordVisible = defaultPasswordVisible if (value.text.isEmpty() && animatedSize == 0.dp) passwordVisible = defaultPasswordVisible
IconToggleButton( IconToggleButton(
modifier = Modifier.size(animatedSize).pointerHoverState(TextFieldPointerState.Common), modifier = Modifier.size(animatedSize).pointerHoverState(TextFieldPointerState.Common),
style = IconButton.style.copy(paddings = DefaultDecorIconPaddings), style = IconButton.style.copy(padding = DefaultDecorIconPadding),
checked = passwordVisible, checked = passwordVisible,
onCheckedChange = { onCheckedChange = {
passwordVisible = it passwordVisible = it
@@ -492,7 +492,7 @@ fun BackspaceTextField(
focusRequester.requestFocus() focusRequester.requestFocus()
}, },
modifier = Modifier.width(animatedSize).pointerHoverState(TextFieldPointerState.Common), modifier = Modifier.width(animatedSize).pointerHoverState(TextFieldPointerState.Common),
style = IconButton.style.copy(paddings = DefaultDecorIconPaddings), style = IconButton.style.copy(padding = DefaultDecorIconPadding),
enabled = enabled, enabled = enabled,
interactionSource = cInteractionSource interactionSource = cInteractionSource
) { Icon(imageVector = Icons.Backspace) } ) { Icon(imageVector = Icons.Backspace) }
@@ -734,14 +734,9 @@ private fun Modifier.textFieldPadding(
fitEnd: Boolean = false fitEnd: Boolean = false
) = composed { ) = composed {
when { when {
!fitStart && !fitEnd -> padding( !fitStart && !fitEnd -> padding(style.padding)
start = style.paddings.start, fitStart -> padding(start = style.padding.calculateStart())
top = style.paddings.top, fitEnd -> padding(end = style.padding.calculateEnd())
end = style.paddings.end,
bottom = style.paddings.bottom
)
fitStart -> padding(start = style.paddings.start)
fitEnd -> padding(end = style.paddings.end)
else -> this else -> this
} }
} }
@@ -783,12 +778,7 @@ private fun defaultTextFieldColors() = TextFieldColors(
@Composable @Composable
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultTextFieldStyle() = TextFieldStyle( private fun defaultTextFieldStyle() = TextFieldStyle(
paddings = TextFieldPaddings( padding = PaddingValues(LocalSizes.current.spacingSecondary),
start = defaultTextFieldPadding(),
top = defaultTextFieldPadding(),
end = defaultTextFieldPadding(),
bottom = defaultTextFieldPadding()
),
shape = when (LocalInAreaBox.current) { shape = when (LocalInAreaBox.current) {
true -> LocalAreaBoxShape.current true -> LocalAreaBoxShape.current
else -> LocalShapes.current.secondary else -> LocalShapes.current.secondary
@@ -806,9 +796,5 @@ private fun defaultTextFieldInactiveBorder() = BorderStroke(LocalSizes.current.b
@ReadOnlyComposable @ReadOnlyComposable
private fun defaultTextFieldActiveBorder() = BorderStroke(LocalSizes.current.borderSizePrimary, LocalColors.current.themePrimary) private fun defaultTextFieldActiveBorder() = BorderStroke(LocalSizes.current.borderSizePrimary, LocalColors.current.themePrimary)
@Composable
@ReadOnlyComposable
private fun defaultTextFieldPadding() = LocalSizes.current.spacingSecondary
private val DefaultDecorIconSize = 24.dp private val DefaultDecorIconSize = 24.dp
private val DefaultDecorIconPaddings = ButtonPaddings(2.dp, 2.dp, 2.dp, 2.dp) private val DefaultDecorIconPadding = PaddingValues(2.dp)

View File

@@ -0,0 +1,56 @@
/*
* Flexi UI - A flexible and useful UI component library.
* Copyright (C) 2019-2023 HighCapable
* https://github.com/BetterAndroid/FlexiUI
*
* Apache License Version 2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* This file is created by fankes on 2023/11/27.
*/
@file:Suppress("unused")
package com.highcapable.flexiui.utils
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.calculateEndPadding
import androidx.compose.foundation.layout.calculateStartPadding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.ui.platform.LocalLayoutDirection
import androidx.compose.ui.unit.LayoutDirection
@Stable
internal val PaddingValues.left get() = calculateLeftPadding(LayoutDirection.Ltr)
@Stable
internal val PaddingValues.top get() = calculateTopPadding()
@Stable
internal val PaddingValues.bottom get() = calculateBottomPadding()
@Stable
internal val PaddingValues.right get() = calculateRightPadding(LayoutDirection.Ltr)
@Stable
internal val PaddingValues.horizontal get() = left + right
@Stable
internal val PaddingValues.vertical get() = top + bottom
@Composable
internal fun PaddingValues.calculateStart() = calculateStartPadding(LocalLayoutDirection.current)
@Composable
internal fun PaddingValues.calculateEnd() = calculateEndPadding(LocalLayoutDirection.current)

View File

@@ -27,6 +27,7 @@ import androidx.compose.foundation.ContextMenuItem
import androidx.compose.foundation.ContextMenuRepresentation import androidx.compose.foundation.ContextMenuRepresentation
import androidx.compose.foundation.ContextMenuState import androidx.compose.foundation.ContextMenuState
import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.sizeIn import androidx.compose.foundation.layout.sizeIn
@@ -207,30 +208,16 @@ internal fun defaultContextMenuColors() = ContextMenuColors(
@ReadOnlyComposable @ReadOnlyComposable
internal fun defaultContextMenuStyle() = ContextMenuStyle( internal fun defaultContextMenuStyle() = ContextMenuStyle(
contentStyle = LocalContextMenuStyle.current.contentStyle ?: AreaBox.style.copy( contentStyle = LocalContextMenuStyle.current.contentStyle ?: AreaBox.style.copy(
paddings = AreaBoxPaddings( padding = PaddingValues(horizontal = DefaultMenuContentPadding),
start = DefaultMenuContentPadding,
top = 0.dp,
end = DefaultMenuContentPadding,
bottom = 0.dp
),
shape = LocalShapes.current.secondary shape = LocalShapes.current.secondary
), ),
borderStyle = LocalContextMenuStyle.current.borderStyle ?: AreaBox.style.copy( borderStyle = LocalContextMenuStyle.current.borderStyle ?: AreaBox.style.copy(
paddings = AreaBoxPaddings( padding = PaddingValues(LocalSizes.current.spacingTertiary),
start = defaultContextMenuBorderPadding(),
top = defaultContextMenuBorderPadding(),
end = defaultContextMenuBorderPadding(),
bottom = defaultContextMenuBorderPadding()
),
shadowSize = LocalSizes.current.zoomSizeTertiary, shadowSize = LocalSizes.current.zoomSizeTertiary,
shape = LocalShapes.current.primary shape = LocalShapes.current.primary
) )
) )
@Composable
@ReadOnlyComposable
private fun defaultContextMenuBorderPadding() = LocalSizes.current.spacingTertiary
private val DefaultMenuContentMinWidth = 112.dp private val DefaultMenuContentMinWidth = 112.dp
private val DefaultMenuContentMaxWidth = 280.dp private val DefaultMenuContentMaxWidth = 280.dp
private val DefaultMenuContentMinHeight = 32.dp private val DefaultMenuContentMinHeight = 32.dp