Tweak AliasVault.Client email domain and field width UI (#1473)

This commit is contained in:
Leendert de Borst
2026-01-23 17:42:43 +01:00
parent ac1ea56315
commit 897026d6ff
3 changed files with 30 additions and 6 deletions
@@ -168,6 +168,13 @@
[Parameter]
public EventCallback OnRemove { get; set; }
/// <summary>
/// When true, defaults to Email mode (custom domain / plain text input) instead of Alias mode.
/// Use this for Login item types where users typically enter existing email addresses.
/// </summary>
[Parameter]
public bool DefaultToEmailMode { get; set; } = false;
private IStringLocalizer Localizer => LocalizerFactory.Create("Components.Main.Forms.EmailDomainField", "AliasVault.Client");
private IStringLocalizer SharedLocalizer => LocalizerFactory.Create("SharedResources", "AliasVault.Client");
@@ -187,8 +194,14 @@
protected override void OnInitialized()
{
base.OnInitialized();
// Set default domain
// Set default mode based on parameter
if (DefaultToEmailMode)
{
IsCustomDomain = true;
}
// Set default domain (for when switching to alias mode later)
if (ShowPrivateDomains && PrivateDomains.Count > 0)
{
SelectedDomain = PrivateDomains[0];
@@ -214,7 +214,9 @@ else
</div>
}
<div class="col-span-6">
<EmailDomainField Id="email" @bind-Value="Obj.GetField(FieldKey.LoginEmail)!.Value"></EmailDomainField>
<EmailDomainField Id="email"
@bind-Value="Obj.GetField(FieldKey.LoginEmail)!.Value"
DefaultToEmailMode="@(Obj.ItemType == ItemType.Login)"></EmailDomainField>
</div>
<div class="col-span-6">
<EditPasswordFormRow Id="password" Label="@Localizer["PasswordLabel"]" @bind-Value="Obj.GetField(FieldKey.LoginPassword)!.Value" ShowPassword="IsPasswordVisible"></EditPasswordFormRow>
@@ -230,12 +232,14 @@ else
{
<EmailDomainField Id="email"
@bind-Value="Obj.GetField(FieldKey.LoginEmail)!.Value"
DefaultToEmailMode="@(Obj.ItemType == ItemType.Login)"
OnRemove="@(() => RemoveOptionalField(FieldKey.LoginEmail))"></EmailDomainField>
}
else
{
<EmailDomainField Id="email"
@bind-Value="Obj.GetField(FieldKey.LoginEmail)!.Value"></EmailDomainField>
@bind-Value="Obj.GetField(FieldKey.LoginEmail)!.Value"
DefaultToEmailMode="@(Obj.ItemType == ItemType.Login)"></EmailDomainField>
}
</div>
}
@@ -171,9 +171,14 @@ else
<form action="#">
<div class="grid grid-cols-6 gap-6">
@{
var hasEmail = loginFields.Any(f => f.FieldKey == FieldKey.LoginEmail);
}
@foreach (var field in loginFields)
{
<FieldBlock Field="@field" ItemId="@Item.Id" />
@* Make username full width if there's no email field *@
var isUsernameWithoutEmail = field.FieldKey == FieldKey.LoginUsername && !hasEmail;
<FieldBlock Field="@field" ItemId="@Item.Id" FullWidth="@isUsernameWithoutEmail" />
}
</div>
</form>
@@ -218,7 +223,9 @@ else
<div class="grid grid-cols-6 gap-6">
@foreach (var field in cardFields)
{
<FieldBlock Field="@field" ItemId="@Item.Id" />
@* Cardholder name should be full width *@
var isFullWidthCardField = field.FieldKey == FieldKey.CardCardholderName;
<FieldBlock Field="@field" ItemId="@Item.Id" FullWidth="@isFullWidthCardField" />
}
</div>
</form>