feat: province move ti utils
This commit is contained in:
+14
-48
@@ -8,12 +8,16 @@ import androidx.compose.material3.*
|
|||||||
import androidx.compose.runtime.*
|
import androidx.compose.runtime.*
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.platform.LocalLayoutDirection
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
|
import androidx.compose.ui.unit.LayoutDirection
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.approagency.drug.domain.model.PharmacyItem
|
import com.approagency.drug.domain.model.PharmacyItem
|
||||||
|
import com.approagency.drug.presentation.common.CustomBox
|
||||||
import com.approagency.drug.presentation.common.CustomModalBottomSheet
|
import com.approagency.drug.presentation.common.CustomModalBottomSheet
|
||||||
import com.approagency.drug.presentation.viewModel.PharmacyState
|
import com.approagency.drug.presentation.viewModel.PharmacyState
|
||||||
import com.approagency.drug.presentation.viewModel.PharmacyViewModel
|
import com.approagency.drug.presentation.viewModel.PharmacyViewModel
|
||||||
|
import com.approagency.drug.utils.provinces
|
||||||
import com.vada.caller.ui.theme.LocalDime
|
import com.vada.caller.ui.theme.LocalDime
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@@ -27,45 +31,10 @@ fun PharmacyBottomSheet(
|
|||||||
) {
|
) {
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
val sheetState = rememberModalBottomSheetState(
|
val sheetState = rememberModalBottomSheetState(
|
||||||
skipPartiallyExpanded = true,
|
skipPartiallyExpanded = false,
|
||||||
confirmValueChange = { true }
|
confirmValueChange = { true }
|
||||||
)
|
)
|
||||||
|
|
||||||
// لیست استانها (همان لیست HTML)
|
|
||||||
val provinces = listOf(
|
|
||||||
Province("0", "همه استان ها"),
|
|
||||||
Province("1", "اصفهان"),
|
|
||||||
Province("40", "تهران"),
|
|
||||||
Province("137", "آذربایجان شرقی"),
|
|
||||||
Province("138", "آذربایجان غربی"),
|
|
||||||
Province("139", "اردبیل"),
|
|
||||||
Province("140", "البرز"),
|
|
||||||
Province("141", "ایلام"),
|
|
||||||
Province("142", "بوشهر"),
|
|
||||||
Province("143", "چهارمحال و بختیاری"),
|
|
||||||
Province("144", "خراسان جنوبی"),
|
|
||||||
Province("145", "خراسان رضوی"),
|
|
||||||
Province("146", "خراسان شمالی"),
|
|
||||||
Province("147", "خوزستان"),
|
|
||||||
Province("148", "زنجان"),
|
|
||||||
Province("149", "سمنان"),
|
|
||||||
Province("150", "سیستان و بلوچستان"),
|
|
||||||
Province("151", "فارس"),
|
|
||||||
Province("152", "قزوین"),
|
|
||||||
Province("153", "قم"),
|
|
||||||
Province("154", "کردستان"),
|
|
||||||
Province("155", "کرمان"),
|
|
||||||
Province("156", "کرمانشاه"),
|
|
||||||
Province("157", "کهگیلویه و بویراحمد"),
|
|
||||||
Province("158", "گلستان"),
|
|
||||||
Province("159", "گیلان"),
|
|
||||||
Province("160", "لرستان"),
|
|
||||||
Province("161", "مازندران"),
|
|
||||||
Province("162", "مرکزی"),
|
|
||||||
Province("163", "هرمزگان"),
|
|
||||||
Province("164", "همدان"),
|
|
||||||
Province("165", "یزد")
|
|
||||||
)
|
|
||||||
|
|
||||||
var selectedProvinceId by remember { mutableStateOf("40") } // پیشفرض تهران
|
var selectedProvinceId by remember { mutableStateOf("40") } // پیشفرض تهران
|
||||||
var showProvinceDropdown by remember { mutableStateOf(false) }
|
var showProvinceDropdown by remember { mutableStateOf(false) }
|
||||||
@@ -85,6 +54,7 @@ fun PharmacyBottomSheet(
|
|||||||
onDismiss = onDismiss,
|
onDismiss = onDismiss,
|
||||||
scope = scope
|
scope = scope
|
||||||
) {
|
) {
|
||||||
|
CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
@@ -104,14 +74,15 @@ fun PharmacyBottomSheet(
|
|||||||
onExpandedChange = { showProvinceDropdown = it }
|
onExpandedChange = { showProvinceDropdown = it }
|
||||||
) {
|
) {
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
value = provinces.find { it.id == selectedProvinceId }?.name ?: "انتخاب استان",
|
value = provinces.find { it.id == selectedProvinceId }?.name
|
||||||
|
?: "انتخاب استان",
|
||||||
onValueChange = {},
|
onValueChange = {},
|
||||||
readOnly = true,
|
readOnly = true,
|
||||||
trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = showProvinceDropdown) },
|
trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = showProvinceDropdown) },
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.menuAnchor(),
|
.menuAnchor(),
|
||||||
shape = MaterialTheme.shapes.small
|
shape = MaterialTheme.shapes.large
|
||||||
)
|
)
|
||||||
|
|
||||||
ExposedDropdownMenu(
|
ExposedDropdownMenu(
|
||||||
@@ -173,7 +144,7 @@ fun PharmacyBottomSheet(
|
|||||||
} else {
|
} else {
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
verticalArrangement = Arrangement.spacedBy(8.dp),
|
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||||
modifier = Modifier.heightIn(max = 400.dp)
|
modifier = Modifier.weight(1f),
|
||||||
) {
|
) {
|
||||||
items(state.items) { pharmacy ->
|
items(state.items) { pharmacy ->
|
||||||
PharmacyResultItem(pharmacy = pharmacy)
|
PharmacyResultItem(pharmacy = pharmacy)
|
||||||
@@ -221,6 +192,7 @@ fun PharmacyBottomSheet(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun PharmacyResultItem(
|
fun PharmacyResultItem(
|
||||||
@@ -229,9 +201,8 @@ fun PharmacyResultItem(
|
|||||||
) {
|
) {
|
||||||
val dime = LocalDime.current
|
val dime = LocalDime.current
|
||||||
|
|
||||||
Card(
|
CustomBox (
|
||||||
modifier = modifier.fillMaxWidth(),
|
modifier = modifier.fillMaxWidth(),
|
||||||
elevation = CardDefaults.cardElevation(defaultElevation = 1.dp)
|
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
@@ -242,7 +213,7 @@ fun PharmacyResultItem(
|
|||||||
// نام برند
|
// نام برند
|
||||||
Text(
|
Text(
|
||||||
text = pharmacy.brandName,
|
text = pharmacy.brandName,
|
||||||
fontSize = MaterialTheme.typography.bodyMedium.fontSize,
|
fontSize = MaterialTheme.typography.labelSmall.fontSize,
|
||||||
color = MaterialTheme.colorScheme.primary
|
color = MaterialTheme.colorScheme.primary
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -250,7 +221,7 @@ fun PharmacyResultItem(
|
|||||||
Text(
|
Text(
|
||||||
text = pharmacy.pharmacyName,
|
text = pharmacy.pharmacyName,
|
||||||
fontWeight = FontWeight.Bold,
|
fontWeight = FontWeight.Bold,
|
||||||
fontSize = MaterialTheme.typography.bodyLarge.fontSize
|
fontSize = MaterialTheme.typography.labelLarge.fontSize
|
||||||
)
|
)
|
||||||
|
|
||||||
// موقعیت
|
// موقعیت
|
||||||
@@ -262,8 +233,3 @@ fun PharmacyResultItem(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class Province(
|
|
||||||
val id: String,
|
|
||||||
val name: String
|
|
||||||
)
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.approagency.drug.utils
|
||||||
|
|
||||||
|
|
||||||
|
val provinces = listOf(
|
||||||
|
Province("0", "همه استان ها"),
|
||||||
|
Province("1", "اصفهان"),
|
||||||
|
Province("40", "تهران"),
|
||||||
|
Province("137", "آذربایجان شرقی"),
|
||||||
|
Province("138", "آذربایجان غربی"),
|
||||||
|
Province("139", "اردبیل"),
|
||||||
|
Province("140", "البرز"),
|
||||||
|
Province("141", "ایلام"),
|
||||||
|
Province("142", "بوشهر"),
|
||||||
|
Province("143", "چهارمحال و بختیاری"),
|
||||||
|
Province("144", "خراسان جنوبی"),
|
||||||
|
Province("145", "خراسان رضوی"),
|
||||||
|
Province("146", "خراسان شمالی"),
|
||||||
|
Province("147", "خوزستان"),
|
||||||
|
Province("148", "زنجان"),
|
||||||
|
Province("149", "سمنان"),
|
||||||
|
Province("150", "سیستان و بلوچستان"),
|
||||||
|
Province("151", "فارس"),
|
||||||
|
Province("152", "قزوین"),
|
||||||
|
Province("153", "قم"),
|
||||||
|
Province("154", "کردستان"),
|
||||||
|
Province("155", "کرمان"),
|
||||||
|
Province("156", "کرمانشاه"),
|
||||||
|
Province("157", "کهگیلویه و بویراحمد"),
|
||||||
|
Province("158", "گلستان"),
|
||||||
|
Province("159", "گیلان"),
|
||||||
|
Province("160", "لرستان"),
|
||||||
|
Province("161", "مازندران"),
|
||||||
|
Province("162", "مرکزی"),
|
||||||
|
Province("163", "هرمزگان"),
|
||||||
|
Province("164", "همدان"),
|
||||||
|
Province("165", "یزد")
|
||||||
|
)
|
||||||
|
|
||||||
|
data class Province(
|
||||||
|
val id: String,
|
||||||
|
val name: String
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user