Extract ConfirmationDialog to the design system module
This commit is contained in:
parent
c1d7f56870
commit
988b5b3fdf
2 changed files with 88 additions and 52 deletions
|
|
@ -3,10 +3,6 @@
|
||||||
package io.element.android.x.features.roomlist.components
|
package io.element.android.x.features.roomlist.components
|
||||||
|
|
||||||
import Avatar
|
import Avatar
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
|
||||||
import androidx.compose.foundation.layout.Row
|
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
|
||||||
import androidx.compose.foundation.layout.padding
|
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.ExitToApp
|
import androidx.compose.material.icons.filled.ExitToApp
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material3.*
|
||||||
|
|
@ -16,8 +12,8 @@ import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.unit.dp
|
|
||||||
import io.element.android.x.core.compose.LogCompositions
|
import io.element.android.x.core.compose.LogCompositions
|
||||||
|
import io.element.android.x.designsystem.components.dialogs.ConfirmationDialog
|
||||||
import io.element.android.x.features.roomlist.model.MatrixUser
|
import io.element.android.x.features.roomlist.model.MatrixUser
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -53,52 +49,12 @@ fun RoomListTopBar(
|
||||||
},
|
},
|
||||||
scrollBehavior = scrollBehavior,
|
scrollBehavior = scrollBehavior,
|
||||||
)
|
)
|
||||||
if (openDialog.value) {
|
// Log out confirmation dialog
|
||||||
AskLogoutConfirmDialog(onLogoutClicked) {
|
ConfirmationDialog(
|
||||||
openDialog.value = false
|
openDialog,
|
||||||
}
|
title = "Log out",
|
||||||
}
|
content = "Do you confirm you want to log out?",
|
||||||
}
|
submitText = "Log out",
|
||||||
|
onSubmitClicked = onLogoutClicked,
|
||||||
@Composable
|
|
||||||
fun AskLogoutConfirmDialog(onLogoutClicked: () -> Unit, onDismiss: () -> Unit) {
|
|
||||||
AlertDialog(
|
|
||||||
onDismissRequest = onDismiss,
|
|
||||||
title = {
|
|
||||||
Text(text = "Log out")
|
|
||||||
},
|
|
||||||
text = {
|
|
||||||
Text("Do you confirm you want to log out?")
|
|
||||||
},
|
|
||||||
confirmButton = {
|
|
||||||
Row(
|
|
||||||
modifier = Modifier.padding(all = 8.dp),
|
|
||||||
horizontalArrangement = Arrangement.Center
|
|
||||||
) {
|
|
||||||
Button(
|
|
||||||
modifier = Modifier.fillMaxWidth(),
|
|
||||||
onClick = {
|
|
||||||
onDismiss()
|
|
||||||
onLogoutClicked()
|
|
||||||
})
|
|
||||||
{
|
|
||||||
Text("Logout")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dismissButton = {
|
|
||||||
Row(
|
|
||||||
modifier = Modifier.padding(all = 8.dp),
|
|
||||||
horizontalArrangement = Arrangement.Center
|
|
||||||
) {
|
|
||||||
Button(
|
|
||||||
modifier = Modifier.fillMaxWidth(),
|
|
||||||
onClick = onDismiss
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Text("Cancel")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
package io.element.android.x.designsystem.components.dialogs
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.material3.AlertDialog
|
||||||
|
import androidx.compose.material3.Button
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.MutableState
|
||||||
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ConfirmationDialog(
|
||||||
|
isDisplayed: MutableState<Boolean>,
|
||||||
|
title: String,
|
||||||
|
content: String,
|
||||||
|
submitText: String = "OK",
|
||||||
|
cancelText: String = "Cancel",
|
||||||
|
onSubmitClicked: () -> Unit = {},
|
||||||
|
onDismiss: () -> Unit = {},
|
||||||
|
) {
|
||||||
|
if (!isDisplayed.value) return
|
||||||
|
AlertDialog(
|
||||||
|
onDismissRequest = onDismiss,
|
||||||
|
title = {
|
||||||
|
Text(text = title)
|
||||||
|
},
|
||||||
|
text = {
|
||||||
|
Text(content)
|
||||||
|
},
|
||||||
|
confirmButton = {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier.padding(all = 8.dp),
|
||||||
|
horizontalArrangement = Arrangement.Center
|
||||||
|
) {
|
||||||
|
Button(
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
onClick = {
|
||||||
|
isDisplayed.value = false
|
||||||
|
onDismiss()
|
||||||
|
onSubmitClicked()
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Text(submitText)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dismissButton = {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier.padding(all = 8.dp),
|
||||||
|
horizontalArrangement = Arrangement.Center
|
||||||
|
) {
|
||||||
|
Button(
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
onClick = {
|
||||||
|
isDisplayed.value = false
|
||||||
|
onDismiss()
|
||||||
|
}) {
|
||||||
|
Text(cancelText)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
@Preview
|
||||||
|
private fun ConfirmationDialogPreview() {
|
||||||
|
ConfirmationDialog(
|
||||||
|
isDisplayed = remember { mutableStateOf(true) },
|
||||||
|
title = "Title",
|
||||||
|
content = "Content",
|
||||||
|
)
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue