From 519769bc9afdd10d77dcc17db643f21b6ebd38b1 Mon Sep 17 00:00:00 2001 From: Syer10 Date: Fri, 1 Dec 2023 19:36:50 -0500 Subject: [PATCH] Remove expect/actual dropdown menu --- .../ui/base/chapter/ChapterDownloadButtons.kt | 2 +- .../jui/ui/base/navigation/ActionMenu.kt | 4 +- .../components/DownloadsScreenContent.kt | 2 +- .../browse/components/SourceScreenContent.kt | 4 +- .../ui/library/components/IosLibraryGrid.kt | 4 +- .../uicore/components/AndroidDropDownMenu.kt | 72 -------------- .../jui/uicore/components/DropDownMenu.kt | 99 ------------------- .../uicore/components/DropdownIconButton.kt | 1 + .../gosyer/jui/uicore/components/Spinner.kt | 5 +- .../uicore/components/DesktopDropDownMenu.kt | 49 --------- .../jui/uicore/components/IosDropDownMenu.kt | 50 ---------- 11 files changed, 13 insertions(+), 279 deletions(-) delete mode 100644 ui-core/src/androidMain/kotlin/ca/gosyer/jui/uicore/components/AndroidDropDownMenu.kt delete mode 100644 ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropDownMenu.kt delete mode 100644 ui-core/src/desktopMain/kotlin/ca/gosyer/jui/uicore/components/DesktopDropDownMenu.kt delete mode 100644 ui-core/src/iosMain/kotlin/ca/gosyer/jui/uicore/components/IosDropDownMenu.kt diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/chapter/ChapterDownloadButtons.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/chapter/ChapterDownloadButtons.kt index 80a86cc3..f519b512 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/chapter/ChapterDownloadButtons.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/chapter/ChapterDownloadButtons.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.CircularProgressIndicator import androidx.compose.material.ContentAlpha +import androidx.compose.material.DropdownMenuItem import androidx.compose.material.Icon import androidx.compose.material.IconButton import androidx.compose.material.LocalContentColor @@ -40,7 +41,6 @@ import ca.gosyer.jui.domain.download.model.DownloadState import ca.gosyer.jui.domain.manga.model.Manga import ca.gosyer.jui.i18n.MR import ca.gosyer.jui.uicore.components.DropdownIconButton -import ca.gosyer.jui.uicore.components.DropdownMenuItem import ca.gosyer.jui.uicore.resources.stringResource import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/navigation/ActionMenu.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/navigation/ActionMenu.kt index 41e1b1b4..484d1e8b 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/navigation/ActionMenu.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/base/navigation/ActionMenu.kt @@ -6,6 +6,8 @@ package ca.gosyer.jui.ui.base.navigation +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem import androidx.compose.material.LocalContentAlpha import androidx.compose.material.MaterialTheme import androidx.compose.material.Text @@ -26,8 +28,6 @@ import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastForEach import ca.gosyer.jui.i18n.MR -import ca.gosyer.jui.uicore.components.DropdownMenu -import ca.gosyer.jui.uicore.components.DropdownMenuItem import ca.gosyer.jui.uicore.resources.stringResource import kotlinx.collections.immutable.ImmutableList diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/downloads/components/DownloadsScreenContent.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/downloads/components/DownloadsScreenContent.kt index 6eeda5e3..df5397cc 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/downloads/components/DownloadsScreenContent.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/downloads/components/DownloadsScreenContent.kt @@ -26,6 +26,7 @@ import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.material.DropdownMenuItem import androidx.compose.material.Icon import androidx.compose.material.LinearProgressIndicator import androidx.compose.material.MaterialTheme @@ -53,7 +54,6 @@ import ca.gosyer.jui.ui.base.navigation.ActionItem import ca.gosyer.jui.ui.base.navigation.Toolbar import ca.gosyer.jui.ui.main.components.bottomNav import ca.gosyer.jui.uicore.components.DropdownIconButton -import ca.gosyer.jui.uicore.components.DropdownMenuItem import ca.gosyer.jui.uicore.components.MangaListItem import ca.gosyer.jui.uicore.components.MangaListItemColumn import ca.gosyer.jui.uicore.components.MangaListItemImage diff --git a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/sources/browse/components/SourceScreenContent.kt b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/sources/browse/components/SourceScreenContent.kt index 3e9595bb..dc159b13 100644 --- a/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/sources/browse/components/SourceScreenContent.kt +++ b/presentation/src/commonMain/kotlin/ca/gosyer/jui/ui/sources/browse/components/SourceScreenContent.kt @@ -22,6 +22,8 @@ import androidx.compose.foundation.layout.only import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem import androidx.compose.material.ExtendedFloatingActionButton import androidx.compose.material.Icon import androidx.compose.material.ModalBottomSheetLayout @@ -57,8 +59,6 @@ import ca.gosyer.jui.ui.base.navigation.Toolbar import ca.gosyer.jui.ui.main.components.bottomNav import ca.gosyer.jui.ui.sources.browse.filter.SourceFiltersMenu import ca.gosyer.jui.ui.sources.browse.filter.model.SourceFiltersView -import ca.gosyer.jui.uicore.components.DropdownMenu -import ca.gosyer.jui.uicore.components.DropdownMenuItem import ca.gosyer.jui.uicore.components.LoadingScreen import ca.gosyer.jui.uicore.insets.navigationBars import ca.gosyer.jui.uicore.insets.statusBars diff --git a/presentation/src/iosMain/kotlin/ca/gosyer/jui/ui/library/components/IosLibraryGrid.kt b/presentation/src/iosMain/kotlin/ca/gosyer/jui/ui/library/components/IosLibraryGrid.kt index 4dfbf2de..b85753fc 100644 --- a/presentation/src/iosMain/kotlin/ca/gosyer/jui/ui/library/components/IosLibraryGrid.kt +++ b/presentation/src/iosMain/kotlin/ca/gosyer/jui/ui/library/components/IosLibraryGrid.kt @@ -7,6 +7,8 @@ package ca.gosyer.jui.ui.library.components import androidx.compose.foundation.combinedClickable +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem import androidx.compose.material.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -15,8 +17,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.composed import ca.gosyer.jui.i18n.MR -import ca.gosyer.jui.uicore.components.DropdownMenu -import ca.gosyer.jui.uicore.components.DropdownMenuItem import ca.gosyer.jui.uicore.resources.stringResource actual fun Modifier.libraryMangaModifier( diff --git a/ui-core/src/androidMain/kotlin/ca/gosyer/jui/uicore/components/AndroidDropDownMenu.kt b/ui-core/src/androidMain/kotlin/ca/gosyer/jui/uicore/components/AndroidDropDownMenu.kt deleted file mode 100644 index d1cd4ca3..00000000 --- a/ui-core/src/androidMain/kotlin/ca/gosyer/jui/uicore/components/AndroidDropDownMenu.kt +++ /dev/null @@ -1,72 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ - -package ca.gosyer.jui.uicore.components - -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.RowScope -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Stable -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.DpOffset -import androidx.compose.ui.window.PopupProperties as AndroidPopupProperties -import androidx.compose.ui.window.SecureFlagPolicy as AndroidSecureFlagPolicy - -@Composable -internal actual fun RealDropdownMenu( - expanded: Boolean, - onDismissRequest: () -> Unit, - modifier: Modifier, - offset: DpOffset, - properties: PopupProperties, - content: @Composable ColumnScope.() -> Unit, -) = androidx.compose.material.DropdownMenu( - expanded = expanded, - onDismissRequest = onDismissRequest, - properties = properties.toAndroidProperties(), - modifier = modifier, - offset = offset, - content = content, -) - -@Composable -internal actual fun RealDropdownMenuItem( - onClick: () -> Unit, - modifier: Modifier, - enabled: Boolean, - contentPadding: PaddingValues, - interactionSource: MutableInteractionSource, - content: @Composable RowScope.() -> Unit, -) = androidx.compose.material.DropdownMenuItem( - onClick = onClick, - modifier = modifier, - enabled = enabled, - contentPadding = contentPadding, - interactionSource = interactionSource, - content = content, -) - -@Stable -fun PopupProperties.toAndroidProperties() = - AndroidPopupProperties( - focusable = focusable, - dismissOnBackPress = dismissOnBackPress, - dismissOnClickOutside = dismissOnClickOutside, - securePolicy = securePolicy.toAndroidSecureFlagPolicy(), - excludeFromSystemGesture = excludeFromSystemGesture, - clippingEnabled = clippingEnabled, - usePlatformDefaultWidth = usePlatformDefaultWidth, - ) - -@Stable -fun SecureFlagPolicy.toAndroidSecureFlagPolicy() = - when (this) { - SecureFlagPolicy.Inherit -> AndroidSecureFlagPolicy.Inherit - SecureFlagPolicy.SecureOn -> AndroidSecureFlagPolicy.SecureOn - SecureFlagPolicy.SecureOff -> AndroidSecureFlagPolicy.SecureOff - } diff --git a/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropDownMenu.kt b/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropDownMenu.kt deleted file mode 100644 index 6a77617c..00000000 --- a/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropDownMenu.kt +++ /dev/null @@ -1,99 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ - -package ca.gosyer.jui.uicore.components - -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.RowScope -import androidx.compose.material.MenuDefaults -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Immutable -import androidx.compose.runtime.Stable -import androidx.compose.runtime.remember -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.DpOffset -import androidx.compose.ui.unit.dp - -/** - * Policy on setting [WindowManager.LayoutParams.FLAG_SECURE] on a window. - */ -@Stable -enum class SecureFlagPolicy { - /** - * Inherit [WindowManager.LayoutParams.FLAG_SECURE] from the parent window and pass it on the - * window that is using this policy. - */ - Inherit, - - /** - * Forces [WindowManager.LayoutParams.FLAG_SECURE] to be set on the window that is using this - * policy. - */ - SecureOn, - - /** - * No [WindowManager.LayoutParams.FLAG_SECURE] will be set on the window that is using this - * policy. - */ - SecureOff, -} - -@Immutable -data class PopupProperties - @ExperimentalComposeUiApi - constructor( - val focusable: Boolean = false, - val dismissOnBackPress: Boolean = true, - val dismissOnClickOutside: Boolean = true, - val securePolicy: SecureFlagPolicy = SecureFlagPolicy.Inherit, - val excludeFromSystemGesture: Boolean = true, - val clippingEnabled: Boolean = true, - @property:ExperimentalComposeUiApi - val usePlatformDefaultWidth: Boolean = false, - ) - -@Composable -internal expect fun RealDropdownMenu( - expanded: Boolean, - onDismissRequest: () -> Unit, - modifier: Modifier, - offset: DpOffset, - properties: PopupProperties, - content: @Composable ColumnScope.() -> Unit, -) - -@Composable -fun DropdownMenu( - expanded: Boolean, - onDismissRequest: () -> Unit, - modifier: Modifier = Modifier, - offset: DpOffset = DpOffset(0.dp, 0.dp), - properties: PopupProperties = PopupProperties(focusable = true), - content: @Composable ColumnScope.() -> Unit, -) = RealDropdownMenu(expanded, onDismissRequest, modifier, offset, properties, content) - -@Composable -internal expect fun RealDropdownMenuItem( - onClick: () -> Unit, - modifier: Modifier, - enabled: Boolean, - contentPadding: PaddingValues, - interactionSource: MutableInteractionSource, - content: @Composable RowScope.() -> Unit, -) - -@Composable -fun DropdownMenuItem( - onClick: () -> Unit, - modifier: Modifier = Modifier, - enabled: Boolean = true, - contentPadding: PaddingValues = MenuDefaults.DropdownMenuItemContentPadding, - interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, - content: @Composable RowScope.() -> Unit, -) = RealDropdownMenuItem(onClick, modifier, enabled, contentPadding, interactionSource, content) diff --git a/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropdownIconButton.kt b/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropdownIconButton.kt index dbb7d940..f33c68e8 100644 --- a/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropdownIconButton.kt +++ b/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropdownIconButton.kt @@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.size +import androidx.compose.material.DropdownMenu import androidx.compose.material.ripple.rememberRipple import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue diff --git a/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/Spinner.kt b/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/Spinner.kt index 77aeb513..878d31ed 100644 --- a/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/Spinner.kt +++ b/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/Spinner.kt @@ -14,6 +14,8 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.DropdownMenu +import androidx.compose.material.DropdownMenuItem import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme import androidx.compose.material.Text @@ -29,6 +31,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.compose.ui.util.fastForEachIndexed @Composable fun Spinner( @@ -58,7 +61,7 @@ fun Spinner( onDismissRequest = { expanded = false }, modifier = Modifier.align(Alignment.CenterEnd), ) { - items.forEachIndexed { index, item -> + items.fastForEachIndexed { index, item -> DropdownMenuItem( onClick = { expanded = false diff --git a/ui-core/src/desktopMain/kotlin/ca/gosyer/jui/uicore/components/DesktopDropDownMenu.kt b/ui-core/src/desktopMain/kotlin/ca/gosyer/jui/uicore/components/DesktopDropDownMenu.kt deleted file mode 100644 index 6cfb2e3c..00000000 --- a/ui-core/src/desktopMain/kotlin/ca/gosyer/jui/uicore/components/DesktopDropDownMenu.kt +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ - -package ca.gosyer.jui.uicore.components - -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.RowScope -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.DpOffset - -@Composable -internal actual fun RealDropdownMenu( - expanded: Boolean, - onDismissRequest: () -> Unit, - modifier: Modifier, - offset: DpOffset, - properties: PopupProperties, - content: @Composable ColumnScope.() -> Unit, -) = androidx.compose.material.DropdownMenu( - expanded = expanded, - onDismissRequest = onDismissRequest, - focusable = properties.focusable, - modifier = modifier, - offset = offset, - content = content, -) - -@Composable -internal actual fun RealDropdownMenuItem( - onClick: () -> Unit, - modifier: Modifier, - enabled: Boolean, - contentPadding: PaddingValues, - interactionSource: MutableInteractionSource, - content: @Composable RowScope.() -> Unit, -) = androidx.compose.material.DropdownMenuItem( - onClick = onClick, - modifier = modifier, - enabled = enabled, - contentPadding = contentPadding, - interactionSource = interactionSource, - content = content, -) diff --git a/ui-core/src/iosMain/kotlin/ca/gosyer/jui/uicore/components/IosDropDownMenu.kt b/ui-core/src/iosMain/kotlin/ca/gosyer/jui/uicore/components/IosDropDownMenu.kt deleted file mode 100644 index a76260c9..00000000 --- a/ui-core/src/iosMain/kotlin/ca/gosyer/jui/uicore/components/IosDropDownMenu.kt +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ - -package ca.gosyer.jui.uicore.components - -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.ColumnScope -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.RowScope -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.DpOffset - -@Composable -internal actual fun RealDropdownMenu( - expanded: Boolean, - onDismissRequest: () -> Unit, - modifier: Modifier, - offset: DpOffset, - properties: PopupProperties, - content: @Composable ColumnScope.() -> Unit, -) = Unit/* TODO androidx.compose.material.DropdownMenu( - expanded = expanded, - onDismissRequest = onDismissRequest, - properties = properties, - modifier = modifier, - offset = offset, - content = content -)*/ - -@Composable -internal actual fun RealDropdownMenuItem( - onClick: () -> Unit, - modifier: Modifier, - enabled: Boolean, - contentPadding: PaddingValues, - interactionSource: MutableInteractionSource, - content: @Composable RowScope.() -> Unit, -) = Unit/* TODO androidx.compose.material.DropdownMenuItem( - onClick = onClick, - modifier = modifier, - enabled = enabled, - contentPadding = contentPadding, - interactionSource = interactionSource, - content = content -) -*/