search bar in skillslist
This commit is contained in:
parent
bdc3a50a53
commit
972823c5b8
4 changed files with 50 additions and 4 deletions
2
DBTApp/.idea/deploymentTargetSelector.xml
generated
2
DBTApp/.idea/deploymentTargetSelector.xml
generated
|
|
@ -4,7 +4,7 @@
|
||||||
<selectionStates>
|
<selectionStates>
|
||||||
<SelectionState runConfigName="app">
|
<SelectionState runConfigName="app">
|
||||||
<option name="selectionMode" value="DROPDOWN" />
|
<option name="selectionMode" value="DROPDOWN" />
|
||||||
<DropdownSelection timestamp="2025-06-04T17:57:13.134457158Z">
|
<DropdownSelection timestamp="2025-06-05T15:18:52.377281030Z">
|
||||||
<Target type="DEFAULT_BOOT">
|
<Target type="DEFAULT_BOOT">
|
||||||
<handle>
|
<handle>
|
||||||
<DeviceId pluginId="LocalEmulator" identifier="path=/home/clara/.android/avd/Pixel_6.avd" />
|
<DeviceId pluginId="LocalEmulator" identifier="path=/home/clara/.android/avd/Pixel_6.avd" />
|
||||||
|
|
|
||||||
|
|
@ -15,18 +15,25 @@ import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
|
import androidx.compose.foundation.text.input.rememberTextFieldState
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.ArrowDropDown
|
import androidx.compose.material.icons.filled.ArrowDropDown
|
||||||
import androidx.compose.material.icons.filled.ArrowDropUp
|
import androidx.compose.material.icons.filled.ArrowDropUp
|
||||||
|
import androidx.compose.material.icons.filled.Search
|
||||||
import androidx.compose.material.icons.filled.Star
|
import androidx.compose.material.icons.filled.Star
|
||||||
import androidx.compose.material.icons.outlined.StarOutline
|
import androidx.compose.material.icons.outlined.StarOutline
|
||||||
import androidx.compose.material3.Card
|
import androidx.compose.material3.Card
|
||||||
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
|
import androidx.compose.material3.SearchBar
|
||||||
|
import androidx.compose.material3.SearchBarDefaults
|
||||||
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -43,8 +50,10 @@ import de.cdaut.dbtapp.model.SkillCategory
|
||||||
@Composable
|
@Composable
|
||||||
fun SkillsScreen() {
|
fun SkillsScreen() {
|
||||||
Column(
|
Column(
|
||||||
Modifier.verticalScroll(rememberScrollState())
|
Modifier.verticalScroll(rememberScrollState()),
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
|
RoundedSearchBar(onSearch = {})
|
||||||
SkillCategory.entries.forEach { skillCategory ->
|
SkillCategory.entries.forEach { skillCategory ->
|
||||||
SkillsCategoryCard(skillCategory.skills, skillCategory.title)
|
SkillsCategoryCard(skillCategory.skills, skillCategory.title)
|
||||||
Spacer(Modifier.height(5.dp))
|
Spacer(Modifier.height(5.dp))
|
||||||
|
|
@ -52,7 +61,6 @@ fun SkillsScreen() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Preview
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun SkillsCategoryCardPrev() {
|
private fun SkillsCategoryCardPrev() {
|
||||||
SkillsCategoryCard(Skill.mockSkills(), "Skill")
|
SkillsCategoryCard(Skill.mockSkills(), "Skill")
|
||||||
|
|
@ -95,7 +103,6 @@ fun SkillsCategoryCard(skills: List<Skill>, title: String) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Preview
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun SingleSkillsCardPreview() {
|
private fun SingleSkillsCardPreview() {
|
||||||
SingleSkillCard(
|
SingleSkillCard(
|
||||||
|
|
@ -157,4 +164,39 @@ private fun SingleSkillCard(title: String, description: String) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
|
@Preview(locale = "de")
|
||||||
|
@Composable
|
||||||
|
private fun RoundedSearchBar(onSearch: (String) -> Unit = {}) {
|
||||||
|
// Controls expansion state of the search bar
|
||||||
|
var expanded by rememberSaveable { mutableStateOf(false) }
|
||||||
|
var textFieldState = rememberTextFieldState()
|
||||||
|
|
||||||
|
SearchBar(
|
||||||
|
inputField = {
|
||||||
|
SearchBarDefaults.InputField(
|
||||||
|
query = textFieldState.text.toString(),
|
||||||
|
onQueryChange = { textFieldState.edit { replace(0, length, it) } },
|
||||||
|
onSearch = {
|
||||||
|
onSearch(textFieldState.text.toString())
|
||||||
|
expanded = false
|
||||||
|
},
|
||||||
|
expanded = expanded,
|
||||||
|
onExpandedChange = { expanded = it },
|
||||||
|
leadingIcon = {
|
||||||
|
Icon(
|
||||||
|
Icons.Filled.Search,
|
||||||
|
contentDescription = stringResource(R.string.content_desc_search_bar)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
placeholder = { Text(stringResource(R.string.label_search_bar)) }
|
||||||
|
)
|
||||||
|
},
|
||||||
|
expanded = expanded,
|
||||||
|
onExpandedChange = { expanded = it }
|
||||||
|
) {
|
||||||
|
Text("Placeholder")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -14,4 +14,6 @@
|
||||||
<string name="add_trackter">Tracker hinzufügen</string>
|
<string name="add_trackter">Tracker hinzufügen</string>
|
||||||
<string name="view_stats">Statistiken</string>
|
<string name="view_stats">Statistiken</string>
|
||||||
<string name="tracker_card_title">Tracker</string>
|
<string name="tracker_card_title">Tracker</string>
|
||||||
|
<string name="label_search_bar">Skill Suchen</string>
|
||||||
|
<string name="content_desc_search_bar">Suche Icon</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -13,4 +13,6 @@
|
||||||
<string name="add_trackter">Add Tracker</string>
|
<string name="add_trackter">Add Tracker</string>
|
||||||
<string name="view_stats">View Statistics</string>
|
<string name="view_stats">View Statistics</string>
|
||||||
<string name="tracker_card_title">Trackers</string>
|
<string name="tracker_card_title">Trackers</string>
|
||||||
|
<string name="label_search_bar">Search Skill</string>
|
||||||
|
<string name="content_desc_search_bar">Search Icon</string>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue