mirror of
https://github.com/smyalygames/checklist-tester.git
synced 2025-11-04 19:59:51 +01:00
feat(connector): add DropdownMenu to each procedure
This commit is contained in:
parent
cd0f16828c
commit
225378dfb9
@ -0,0 +1,10 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="960"
|
||||||
|
android:viewportHeight="960"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FFFFFF"
|
||||||
|
android:pathData="M480,615L240,375L296,319L480,503L664,319L720,375L480,615Z"/>
|
||||||
|
</vector>
|
||||||
@ -3,28 +3,28 @@ package tab.procedure
|
|||||||
import InterfaceState
|
import InterfaceState
|
||||||
import androidx.compose.foundation.VerticalScrollbar
|
import androidx.compose.foundation.VerticalScrollbar
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.*
|
||||||
import androidx.compose.foundation.layout.Column
|
|
||||||
import androidx.compose.foundation.layout.fillMaxHeight
|
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.foundation.rememberScrollbarAdapter
|
import androidx.compose.foundation.rememberScrollbarAdapter
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight
|
|
||||||
import androidx.compose.material.icons.outlined.Add
|
import androidx.compose.material.icons.outlined.Add
|
||||||
|
import androidx.compose.material.icons.outlined.Edit
|
||||||
|
import androidx.compose.material.icons.outlined.PlayArrow
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material3.*
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.*
|
||||||
import androidx.compose.runtime.collectAsState
|
|
||||||
import androidx.compose.runtime.getValue
|
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import cafe.adriel.voyager.core.screen.Screen
|
import cafe.adriel.voyager.core.screen.Screen
|
||||||
import cafe.adriel.voyager.koin.getScreenModel
|
import cafe.adriel.voyager.koin.getScreenModel
|
||||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||||
|
import connector.composeapp.generated.resources.Res
|
||||||
|
import connector.composeapp.generated.resources.expand_more_24px
|
||||||
import io.anthonyberg.connector.shared.entity.Procedure
|
import io.anthonyberg.connector.shared.entity.Procedure
|
||||||
|
import org.jetbrains.compose.resources.ExperimentalResourceApi
|
||||||
|
import org.jetbrains.compose.resources.painterResource
|
||||||
import org.koin.compose.koinInject
|
import org.koin.compose.koinInject
|
||||||
import tab.LoadingScreen
|
import tab.LoadingScreen
|
||||||
|
|
||||||
@ -86,21 +86,71 @@ class ListProcedures (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalResourceApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
private fun procedureItem(procedure: Procedure, viewModel: InterfaceState, screenModel: ActionsScreenModel) {
|
private fun procedureItem(procedure: Procedure, viewModel: InterfaceState, screenModel: ActionsScreenModel) {
|
||||||
ListItem(
|
var expanded by remember { mutableStateOf(false) }
|
||||||
|
|
||||||
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.clickable(
|
.fillMaxSize()
|
||||||
enabled = true,
|
.wrapContentSize(Alignment.TopEnd)
|
||||||
onClick = {
|
) {
|
||||||
viewModel.procedureId = procedure.id
|
ListItem(
|
||||||
screenModel.getActions()
|
modifier = Modifier
|
||||||
}
|
.clickable(
|
||||||
),
|
enabled = true,
|
||||||
overlineContent = { Text(procedure.type) },
|
onClick = {
|
||||||
headlineContent = { Text(procedure.name) },
|
expanded = true
|
||||||
trailingContent = { Icon(Icons.AutoMirrored.Filled.KeyboardArrowRight, "Open Procedure") }
|
}
|
||||||
)
|
),
|
||||||
|
overlineContent = { Text(procedure.type) },
|
||||||
|
headlineContent = { Text(procedure.name) },
|
||||||
|
trailingContent = { Icon(painterResource(Res.drawable.expand_more_24px), "Open Procedure Menu") }
|
||||||
|
)
|
||||||
|
|
||||||
|
procedureMenu(
|
||||||
|
procedure = procedure,
|
||||||
|
viewModel = viewModel,
|
||||||
|
screenModel = screenModel,
|
||||||
|
expanded = expanded,
|
||||||
|
onDismissRequest = { expanded = false }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
HorizontalDivider()
|
HorizontalDivider()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun procedureMenu(
|
||||||
|
procedure: Procedure,
|
||||||
|
viewModel: InterfaceState,
|
||||||
|
screenModel: ActionsScreenModel,
|
||||||
|
expanded: Boolean,
|
||||||
|
onDismissRequest: () -> Unit
|
||||||
|
) {
|
||||||
|
DropdownMenu(
|
||||||
|
expanded = expanded,
|
||||||
|
onDismissRequest = onDismissRequest,
|
||||||
|
) {
|
||||||
|
DropdownMenuItem(
|
||||||
|
text = { Text("Edit") },
|
||||||
|
onClick = {
|
||||||
|
viewModel.procedureId = procedure.id
|
||||||
|
screenModel.getActions()
|
||||||
|
},
|
||||||
|
leadingIcon = {
|
||||||
|
Icon(Icons.Outlined.Edit, "Edit Procedure")
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
DropdownMenuItem(
|
||||||
|
text = { Text("Run Test") },
|
||||||
|
onClick = { /* TODO add logic */ },
|
||||||
|
leadingIcon = {
|
||||||
|
Icon(Icons.Outlined.PlayArrow, "Run Procedure Tests")
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user