Skip to content

Commit ef66a5e

Browse files
committed
Skills are drag and drop-able between proficiency levels
1 parent 12803c5 commit ef66a5e

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

LinkDotNet.Blog.Web/Shared/Skills/SkillTable.razor

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,25 @@
2020
</tr>
2121
@foreach (var skillCapabilityGroup in skills.GroupBy(s => s.Capability))
2222
{
23-
<tr>
23+
<tr ondragover="event.preventDefault();">
2424
<td>@skillCapabilityGroup.Key</td>
2525
@foreach (var skillLevel in ProficiencyLevel.All)
2626
{
27-
<td>
27+
<td @ondrop="@(() => HandleDrop(skillLevel))">
2828
@foreach (var skill in skillCapabilityGroup.Where(s => s.ProficiencyLevel == skillLevel))
2929
{
30-
<div>
31-
<SkillTag Skill="@skill"/>
32-
</div>
30+
@if (IsAuthenticated)
31+
{
32+
<div draggable="true" @ondrag="@(() => currentDragItem = skill)" style="cursor: grab">
33+
<SkillTag Skill="@skill"/>
34+
</div>
35+
}
36+
else
37+
{
38+
<div>
39+
<SkillTag Skill="@skill"/>
40+
</div>
41+
}
3342
}
3443
</td>
3544
}
@@ -47,10 +56,23 @@
4756

4857
private List<Skill> skills = new();
4958

59+
private Skill currentDragItem;
60+
5061
private Task AddSkill(Skill skillToAdd)
5162
{
5263
skills.Add(skillToAdd);
5364
return Task.CompletedTask;
5465
}
5566

67+
private void HandleDrop(ProficiencyLevel proficiencyLevel)
68+
{
69+
if (currentDragItem == null || currentDragItem.ProficiencyLevel == proficiencyLevel)
70+
{
71+
return;
72+
}
73+
74+
currentDragItem.ProficiencyLevel = proficiencyLevel;
75+
currentDragItem = null;
76+
}
77+
5678
}

0 commit comments

Comments
 (0)