Enhance exercise selection UI in Routines page
This commit is contained in:
@@ -36,10 +36,11 @@
|
|||||||
<div class="list">
|
<div class="list">
|
||||||
@foreach (var exercise in ExerciseList)
|
@foreach (var exercise in ExerciseList)
|
||||||
{
|
{
|
||||||
<label class="checkbox-row">
|
var isSelected = SelectedExerciseIds.Contains(exercise.Id);
|
||||||
<input type="checkbox" checked="@SelectedExerciseIds.Contains(exercise.Id)" @onchange="() => ToggleExercise(exercise.Id)" />
|
<div class="list-item selectable @(isSelected ? "selected" : string.Empty)" @onclick="() => ToggleExercise(exercise.Id)">
|
||||||
<span>@exercise.Name</span>
|
<div class="item-title">@exercise.Name</div>
|
||||||
</label>
|
<span class="check-icon @(isSelected ? "visible" : string.Empty)" aria-hidden="true">✓</span>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<button class="primary" @onclick="CreateRoutineAsync" disabled="@string.IsNullOrWhiteSpace(NewRoutineName)">Save Routine</button>
|
<button class="primary" @onclick="CreateRoutineAsync" disabled="@string.IsNullOrWhiteSpace(NewRoutineName)">Save Routine</button>
|
||||||
@@ -91,10 +92,11 @@
|
|||||||
<div class="list">
|
<div class="list">
|
||||||
@foreach (var exercise in ExerciseList)
|
@foreach (var exercise in ExerciseList)
|
||||||
{
|
{
|
||||||
<label class="checkbox-row">
|
var isSelected = EditingExerciseIds.Contains(exercise.Id);
|
||||||
<input type="checkbox" checked="@EditingExerciseIds.Contains(exercise.Id)" @onchange="() => ToggleEditExercise(exercise.Id)" />
|
<div class="list-item selectable @(isSelected ? "selected" : string.Empty)" @onclick="() => ToggleEditExercise(exercise.Id)">
|
||||||
<span>@exercise.Name</span>
|
<div class="item-title">@exercise.Name</div>
|
||||||
</label>
|
<span class="check-icon @(isSelected ? "visible" : string.Empty)" aria-hidden="true">✓</span>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
|
|||||||
@@ -139,6 +139,36 @@ p {
|
|||||||
border-color: #1f6b38;
|
border-color: #1f6b38;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.list-item.selectable {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item.selected {
|
||||||
|
background: #10331a;
|
||||||
|
border-color: #1f6b38;
|
||||||
|
}
|
||||||
|
|
||||||
|
.check-icon {
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
border-radius: 999px;
|
||||||
|
border: 1px solid #2a2a2a;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #ffffff;
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.85);
|
||||||
|
transition: opacity 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.check-icon.visible {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
border-color: #1f6b38;
|
||||||
|
}
|
||||||
|
|
||||||
.item-title {
|
.item-title {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user