This commit is contained in:
@@ -172,30 +172,101 @@
|
||||
<ValidationMessage For="() => _application.Platforms" />
|
||||
</div>
|
||||
|
||||
<!-- Skills & What You Bring -->
|
||||
<div class="dev-section">
|
||||
<h2 class="dev-section-title">What You Bring</h2>
|
||||
<p class="dev-section-desc">Tell us about your skills and what you'd bring to the team.</p>
|
||||
<!-- Role-Specific Assessment -->
|
||||
@if (_application.Role == ApplicationRole.Tester)
|
||||
{
|
||||
<div class="dev-section">
|
||||
<h2 class="dev-section-title">About Your Experience</h2>
|
||||
<p class="dev-section-desc">Help us understand your background — there are no wrong answers.</p>
|
||||
|
||||
@if (_application.Role == ApplicationRole.Developer)
|
||||
{
|
||||
<div class="form-group" style="margin-bottom: 1.25rem;">
|
||||
<label for="skills">Technical Skills</label>
|
||||
<InputTextArea id="skills" @bind-Value="_application.Skills" class="form-input form-textarea"
|
||||
placeholder="e.g. C#/.NET 5 years, Blazor, PostgreSQL, Docker, contributed to..." rows="4" />
|
||||
<span class="form-hint">Languages, frameworks, tools, and any open-source contributions</span>
|
||||
<div class="form-group" style="margin-bottom: 1.5rem;">
|
||||
<label>How well do you understand the internet and online services?</label>
|
||||
<div class="star-rating">
|
||||
@for (int i = 1; i <= 5; i++)
|
||||
{
|
||||
var rating = i;
|
||||
<span class="star-rating-star @(rating <= (_internetHover > 0 ? _internetHover : (_application.InternetUnderstanding ?? 0)) ? "star-filled" : "")"
|
||||
@onclick="() => _application.InternetUnderstanding = rating"
|
||||
@onmouseover="() => _internetHover = rating"
|
||||
@onmouseout="() => _internetHover = 0">@(rating <= (_internetHover > 0 ? _internetHover : (_application.InternetUnderstanding ?? 0)) ? "\u2605" : "\u2606")</span>
|
||||
}
|
||||
</div>
|
||||
<div class="rating-labels">
|
||||
<span>Beginner</span>
|
||||
<span>Expert</span>
|
||||
</div>
|
||||
<ValidationMessage For="() => _application.InternetUnderstanding" />
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="motivation">How will you contribute?</label>
|
||||
<InputTextArea id="motivation" @bind-Value="_application.Motivation" class="form-input form-textarea"
|
||||
placeholder="@(_application.Role == ApplicationRole.Developer
|
||||
? "What areas interest you? Architecture, frontend, backend, DevOps, security..."
|
||||
: "What devices/platforms can you test on? What kind of testing experience do you have?")" rows="4" />
|
||||
<ValidationMessage For="() => _application.Motivation" />
|
||||
<div class="form-group" style="margin-bottom: 1.5rem;">
|
||||
<label>How much do you enjoy trying new software and finding issues?</label>
|
||||
<div class="star-rating">
|
||||
@for (int i = 1; i <= 5; i++)
|
||||
{
|
||||
var rating = i;
|
||||
<span class="star-rating-star @(rating <= (_testingHover > 0 ? _testingHover : (_application.EnjoysTesting ?? 0)) ? "star-filled" : "")"
|
||||
@onclick="() => _application.EnjoysTesting = rating"
|
||||
@onmouseover="() => _testingHover = rating"
|
||||
@onmouseout="() => _testingHover = 0">@(rating <= (_testingHover > 0 ? _testingHover : (_application.EnjoysTesting ?? 0)) ? "\u2605" : "\u2606")</span>
|
||||
}
|
||||
</div>
|
||||
<div class="rating-labels">
|
||||
<span>Not really</span>
|
||||
<span>Love it</span>
|
||||
</div>
|
||||
<ValidationMessage For="() => _application.EnjoysTesting" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="additionalNotes">Anything else you'd like us to know? (optional)</label>
|
||||
<InputTextArea id="additionalNotes" @bind-Value="_application.AdditionalNotes" class="form-input form-textarea"
|
||||
placeholder="Previous testing experience, specific interests, etc." rows="3" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="dev-section">
|
||||
<h2 class="dev-section-title">Your Skills</h2>
|
||||
<p class="dev-section-desc">Select your experience level and the technologies you work with.</p>
|
||||
|
||||
<div class="form-group" style="margin-bottom: 1.5rem;">
|
||||
<label>Experience Level</label>
|
||||
<div class="experience-selector">
|
||||
@foreach (var range in SkillCatalog.ExperienceRanges)
|
||||
{
|
||||
<button type="button"
|
||||
class="exp-btn @(_application.ExperienceRange == range ? "exp-active" : "")"
|
||||
@onclick="() => _application.ExperienceRange = range">@range</button>
|
||||
}
|
||||
</div>
|
||||
<ValidationMessage For="() => _application.ExperienceRange" />
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-bottom: 1.5rem;">
|
||||
<label>Technologies (select all that apply)</label>
|
||||
@foreach (var category in SkillCatalog.SkillCategories)
|
||||
{
|
||||
<div class="skill-category-label">@category.Key</div>
|
||||
<div class="skill-bubbles">
|
||||
@foreach (var skill in category.Value)
|
||||
{
|
||||
<button type="button"
|
||||
class="skill-bubble @(_application.SelectedSkills.Contains(skill) ? "skill-active" : "")"
|
||||
@onclick="() => ToggleSkill(skill)">@skill</button>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
<ValidationMessage For="() => _application.SelectedSkills" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="additionalNotes">Anything not listed above? (optional)</label>
|
||||
<InputTextArea id="additionalNotes" @bind-Value="_application.AdditionalNotes" class="form-input form-textarea"
|
||||
placeholder="Other skills, open-source contributions, areas of interest..." rows="3" />
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<!-- What You Get -->
|
||||
<div class="dev-section dev-perks">
|
||||
@@ -251,6 +322,8 @@
|
||||
private bool _submitted;
|
||||
private string? _resultMessage;
|
||||
private string? _errorMessage;
|
||||
private int _internetHover;
|
||||
private int _testingHover;
|
||||
|
||||
private UsernameCheckState _usernameCheckState = UsernameCheckState.None;
|
||||
private string? _usernameFormatError;
|
||||
@@ -329,6 +402,14 @@
|
||||
_application.Platforms.Add(platform);
|
||||
}
|
||||
|
||||
private void ToggleSkill(string skill)
|
||||
{
|
||||
if (_application.SelectedSkills.Contains(skill))
|
||||
_application.SelectedSkills.Remove(skill);
|
||||
else
|
||||
_application.SelectedSkills.Add(skill);
|
||||
}
|
||||
|
||||
private void OnUsernameInput(ChangeEventArgs e)
|
||||
{
|
||||
var username = e.Value?.ToString() ?? "";
|
||||
|
||||
Reference in New Issue
Block a user