attendence

This commit is contained in:
sathwikcs
2024-10-16 17:47:27 +05:30
parent 7b3e4465bd
commit 3971b58472
2 changed files with 85 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
package `in`.sminnovations.attendanceapp.screens.history.components
import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowDropDown
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.Close
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import `in`.sminnovations.attendanceapp.screens.history.data.Attendance
@Composable
fun EnhancedAttendanceCard(attendance: Attendance) {
var isExpanded by remember { mutableStateOf(false) }
Card(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 8.dp, horizontal = 16.dp)
.animateContentSize(), // Animate the size change for a smooth expand/collapse
shape = RoundedCornerShape(12.dp),
elevation = CardDefaults.cardElevation(6.dp)
) {
Column(
modifier = Modifier
.background(MaterialTheme.colorScheme.primaryContainer)
.padding(16.dp)
) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.fillMaxWidth()
) {
Text(
text = attendance.date,
fontWeight = FontWeight.Bold,
fontSize = 18.sp,
color = MaterialTheme.colorScheme.onPrimaryContainer,
modifier = Modifier.weight(1f)
)
Icon(
imageVector = if (attendance.isPresent) Icons.Default.Check else Icons.Default.Close,
contentDescription = if (attendance.isPresent) "Present" else "Absent",
tint = if (attendance.isPresent) Color(0xFF4CAF50) else Color(0xFFF44336)
)
IconButton(
onClick = { isExpanded = !isExpanded }
) {
Icon(
imageVector = Icons.Default.ArrowDropDown,
contentDescription = "Expand or Collapse",
tint = MaterialTheme.colorScheme.onPrimaryContainer
)
}
}
if (isExpanded) {
Spacer(modifier = Modifier.height(8.dp))
Text(
text = "Check In: ${attendance.checkInTime ?: "N/A"}",
color = MaterialTheme.colorScheme.onPrimaryContainer
)
Text(
text = "Check Out: ${attendance.checkOutTime ?: "N/A"}",
color = MaterialTheme.colorScheme.onPrimaryContainer
)
}
}
}
}

View File

@@ -0,0 +1,8 @@
package `in`.sminnovations.attendanceapp.screens.history.data
data class Attendance(
val date: String,
val isPresent: Boolean,
val checkInTime: String?,
val checkOutTime: String?
)