From 1acedec330eb19d6225077729f97b352d16b95d8 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov <54908981+konstantiniiv@users.noreply.github.com> Date: Tue, 11 Jul 2023 22:46:26 +0200 Subject: [PATCH] DROID-1503 Sample | Design | Base dialog (#170) --- sample/build.gradle | 3 + sample/google-services.json | 39 ++++++++ .../ComposeButtonsPrimaryFragment.kt | 36 +++++++ .../design_system/ComposeDialogFragment.kt | 93 +++++++++++++++++++ .../design_system/ContentStyleMultiline.kt | 1 - .../design_system/DesignSystemActivity.kt | 9 ++ .../sample/design_system/NavigateFragment.kt | 3 + .../src/main/res/layout/fragment_navigate.xml | 10 ++ 8 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 sample/google-services.json create mode 100644 sample/src/main/java/com/anytypeio/anytype/sample/design_system/ComposeDialogFragment.kt diff --git a/sample/build.gradle b/sample/build.gradle index 57161db9fa..c8963bd1dc 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -3,6 +3,7 @@ plugins { id "kotlin-android" id "kotlin-android-extensions" id "kotlin-kapt" + id 'com.google.gms.google-services' } android { @@ -84,4 +85,6 @@ dependencies { testImplementation libs.robolectric testImplementation libs.androidXTestCore testImplementation libs.mockitoKotlin + + implementation platform('com.google.firebase:firebase-bom:32.1.1') } diff --git a/sample/google-services.json b/sample/google-services.json new file mode 100644 index 0000000000..b64bdff46d --- /dev/null +++ b/sample/google-services.json @@ -0,0 +1,39 @@ +{ + "project_info": { + "project_number": "75520222594", + "project_id": "anytype-sample-app", + "storage_bucket": "anytype-sample-app.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:75520222594:android:d4012298e84c02fd701b9b", + "android_client_info": { + "package_name": "com.anytypeio.anytype.sample" + } + }, + "oauth_client": [ + { + "client_id": "75520222594-b8cfi2o2kc9opuc4q5jak0lq0itf9omb.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyADvkkkSxg41N_t6DKYh23-fiYRwAzFB7U" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "75520222594-b8cfi2o2kc9opuc4q5jak0lq0itf9omb.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ComposeButtonsPrimaryFragment.kt b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ComposeButtonsPrimaryFragment.kt index 57d8ef56f5..60e2c2ee2c 100644 --- a/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ComposeButtonsPrimaryFragment.kt +++ b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ComposeButtonsPrimaryFragment.kt @@ -27,6 +27,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.anytypeio.anytype.core_ui.views.ButtonSecondaryLoading import com.anytypeio.anytype.core_ui.views.ButtonPrimary +import com.anytypeio.anytype.core_ui.views.ButtonPrimaryDarkTheme import com.anytypeio.anytype.core_ui.views.ButtonSecondary import com.anytypeio.anytype.core_ui.views.ButtonSize import com.anytypeio.anytype.core_ui.views.ButtonWarning @@ -132,6 +133,14 @@ class ComposeButtonsPrimaryFragment : BaseComposeFragment() { modifierButton = Modifier .wrapContentHeight() ) + ButtonPrimaryDarkTheme( + onClick = {}, + modifier = Modifier + .wrapContentHeight() + .align(CenterHorizontally), + text = "Button Dark", + size = ButtonSize.XSmall + ) Text( text = "Button.Small", modifier = Modifier @@ -206,6 +215,14 @@ class ComposeButtonsPrimaryFragment : BaseComposeFragment() { modifierButton = Modifier .wrapContentHeight() ) + ButtonPrimaryDarkTheme( + onClick = {}, + modifier = Modifier + .wrapContentHeight() + .align(CenterHorizontally), + text = "Button Dark", + size = ButtonSize.Small + ) Text( text = "Button.Medium", modifier = Modifier @@ -288,6 +305,15 @@ class ComposeButtonsPrimaryFragment : BaseComposeFragment() { .wrapContentHeight() .padding(horizontal = 16.dp, vertical = 8.dp) ) + ButtonPrimaryDarkTheme( + onClick = {}, + modifier = Modifier + .wrapContentHeight() + .padding(horizontal = 16.dp, vertical = 8.dp) + .align(CenterHorizontally), + text = "Button Dark", + size = ButtonSize.Medium + ) Text( text = "Button.Large", modifier = Modifier @@ -373,6 +399,16 @@ class ComposeButtonsPrimaryFragment : BaseComposeFragment() { .fillMaxWidth() .padding(horizontal = 16.dp, vertical = 8.dp) ) + ButtonPrimaryDarkTheme( + onClick = {}, + modifier = Modifier + .wrapContentHeight() + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp) + .align(CenterHorizontally), + text = "Button Dark", + size = ButtonSize.Large + ) } } } diff --git a/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ComposeDialogFragment.kt b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ComposeDialogFragment.kt new file mode 100644 index 0000000000..9afc4628ee --- /dev/null +++ b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ComposeDialogFragment.kt @@ -0,0 +1,93 @@ +package com.anytypeio.anytype.sample.design_system + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.Text +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.ComposeView +import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.unit.dp +import com.anytypeio.anytype.core_ui.views.BaseAlertDialog +import com.anytypeio.anytype.core_ui.views.ButtonPrimary +import com.anytypeio.anytype.core_ui.views.ButtonSize +import com.anytypeio.anytype.core_ui.views.HeadlineHeading +import com.anytypeio.anytype.core_utils.ui.BaseComposeFragment +import com.anytypeio.anytype.sample.R +import com.google.accompanist.pager.ExperimentalPagerApi +import kotlinx.coroutines.FlowPreview + +class ComposeDialogFragment : BaseComposeFragment() { + + @FlowPreview + @ExperimentalPagerApi + @ExperimentalMaterialApi + @ExperimentalComposeUiApi + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? + ): View { + return ComposeView(requireContext()).apply { + setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) + setContent { + + val showDialog = remember { mutableStateOf(false) } + + Box( + modifier = Modifier + .fillMaxSize() + .padding(vertical = 16.dp) + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .verticalScroll(rememberScrollState()) + ) { + Text( + text = "Dialogs", + modifier = Modifier.align(Alignment.CenterHorizontally), + style = HeadlineHeading, + color = colorResource(id = R.color.text_primary) + ) + ButtonPrimary( + onClick = { showDialog.value = true }, + modifier = Modifier + .wrapContentHeight() + .padding(horizontal = 16.dp, vertical = 32.dp) + .align(Alignment.CenterHorizontally), + text = "Show Dialog", + size = ButtonSize.Medium + ) + } + } + + if (showDialog.value) { + BaseAlertDialog( + onDismissRequest = { showDialog.value = false }, + onButtonClick = { showDialog.value = false }, + dialogText = "Here’s some alert text. It can span multiple lines if needed!", + buttonText = "Ok" + ) + } + } + } + } + + override fun injectDependencies() {} + + override fun releaseDependencies() {} +} \ No newline at end of file diff --git a/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ContentStyleMultiline.kt b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ContentStyleMultiline.kt index 927b9cdaaa..0d690ba77a 100644 --- a/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ContentStyleMultiline.kt +++ b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/ContentStyleMultiline.kt @@ -4,7 +4,6 @@ import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment import com.anytypeio.anytype.sample.R -import com.anytypeio.anytype.sample.databinding.FragmentButtonsBinding import com.anytypeio.anytype.sample.databinding.FragmentContentStyleMultilineBinding class ContentStyleMultiline: Fragment(R.layout.fragment_content_style_multiline) { diff --git a/sample/src/main/java/com/anytypeio/anytype/sample/design_system/DesignSystemActivity.kt b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/DesignSystemActivity.kt index 3714c2d54f..9d56b4ef59 100644 --- a/sample/src/main/java/com/anytypeio/anytype/sample/design_system/DesignSystemActivity.kt +++ b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/DesignSystemActivity.kt @@ -71,6 +71,14 @@ class DesignSystemActivity : AppCompatActivity(), Navigate { .addToBackStack(null) .commit() } + + override fun toDialogsCompose() { + supportFragmentManager + .beginTransaction() + .replace(R.id.root, ComposeDialogFragment()) + .addToBackStack(null) + .commit() + } } interface Navigate { @@ -81,4 +89,5 @@ interface Navigate { fun toButtonsSecondary() fun toButtonsWarning() fun toButtonsCompose() + fun toDialogsCompose() } \ No newline at end of file diff --git a/sample/src/main/java/com/anytypeio/anytype/sample/design_system/NavigateFragment.kt b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/NavigateFragment.kt index ac4d7118e9..b33ba94167 100644 --- a/sample/src/main/java/com/anytypeio/anytype/sample/design_system/NavigateFragment.kt +++ b/sample/src/main/java/com/anytypeio/anytype/sample/design_system/NavigateFragment.kt @@ -34,6 +34,9 @@ class NavigateFragment : Fragment(R.layout.fragment_navigate) { view.findViewById(R.id.btnCompose).setOnClickListener { (activity as Navigate).toButtonsCompose() } + view.findViewById(R.id.btnDialogsCompose).setOnClickListener { + (activity as Navigate).toDialogsCompose() + } view.findViewById(R.id.switch3).setOnClickListener { it as Switch if (it.isChecked) { diff --git a/sample/src/main/res/layout/fragment_navigate.xml b/sample/src/main/res/layout/fragment_navigate.xml index 66b2f339bc..01d821c7b5 100644 --- a/sample/src/main/res/layout/fragment_navigate.xml +++ b/sample/src/main/res/layout/fragment_navigate.xml @@ -86,4 +86,14 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button20" /> + + \ No newline at end of file