1
0
mirror of https://github.com/bitwarden/mobile synced 2025-12-27 13:43:32 +00:00

Added button to toggle password field visibility on site edit

This commit is contained in:
Kyle Spearrin
2016-11-07 22:07:33 -05:00
parent 4a0e3227fc
commit db6ceea711
4 changed files with 88 additions and 5 deletions

View File

@@ -12,6 +12,8 @@ namespace Bit.App.Controls
{
PlaceholderColor = Color.FromHex("c7c7cd");
}
IsPasswordFromToggled = IsPassword;
}
public static readonly BindableProperty HasBorderProperty =
@@ -62,5 +64,20 @@ namespace Bit.App.Controls
{
Completed?.Invoke(this, null);
}
public virtual void InvokeToggleIsPassword()
{
if(ToggleIsPassword == null)
{
IsPassword = IsPasswordFromToggled = !IsPassword;
}
else
{
ToggleIsPassword.Invoke(this, null);
}
}
public event EventHandler ToggleIsPassword;
public bool IsPasswordFromToggled { get; set; } = false;
}
}

View File

@@ -14,7 +14,8 @@ namespace Bit.App.Controls
VisualElement nextElement = null,
bool useLabelAsPlaceholder = false,
string imageSource = null,
Thickness? containerPadding = null)
Thickness? containerPadding = null,
bool useButton = false)
{
if(!useLabelAsPlaceholder)
{
@@ -112,6 +113,12 @@ namespace Bit.App.Controls
formStackLayout.Children.Add(Entry);
imageStackLayout.Children.Add(formStackLayout);
if(useButton)
{
Button = new ExtendedButton();
imageStackLayout.Children.Add(Button);
}
Tapped += FormEntryCell_Tapped;
View = imageStackLayout;
@@ -119,6 +126,7 @@ namespace Bit.App.Controls
public Label Label { get; private set; }
public ExtendedEntry Entry { get; private set; }
public ExtendedButton Button { get; private set; }
private void Tgr_Tapped(object sender, EventArgs e)
{

View File

@@ -45,15 +45,21 @@ namespace Bit.App.Pages
var notesCell = new FormEditorCell(height: 90);
notesCell.Editor.Text = site.Notes?.Decrypt();
PasswordCell = new FormEntryCell(AppResources.Password, IsPassword: true, nextElement: notesCell.Editor);
PasswordCell = new FormEntryCell(AppResources.Password, IsPassword: true, nextElement: notesCell.Editor,
useButton: true);
PasswordCell.Entry.Text = site.Password?.Decrypt();
PasswordCell.Button.Image = "eye";
PasswordCell.Button.Clicked += PasswordButton_Clicked;
var usernameCell = new FormEntryCell(AppResources.Username, nextElement: PasswordCell.Entry);
usernameCell.Entry.Text = site.Username?.Decrypt();
usernameCell.Entry.DisableAutocapitalize = true;
usernameCell.Entry.Autocorrect = false;
usernameCell.Entry.FontFamily = PasswordCell.Entry.FontFamily = Device.OnPlatform(
iOS: "Courier", Android: "monospace", WinPhone: "Courier");
usernameCell.Entry.FontFamily = PasswordCell.Entry.FontFamily =
Device.OnPlatform(iOS: "Courier", Android: "monospace", WinPhone: "Courier");
var uriCell = new FormEntryCell(AppResources.URI, Keyboard.Url, nextElement: usernameCell.Entry);
uriCell.Entry.Text = site.Uri?.Decrypt();
@@ -192,6 +198,12 @@ namespace Bit.App.Pages
}
}
private void PasswordButton_Clicked(object sender, EventArgs e)
{
PasswordCell.Entry.InvokeToggleIsPassword();
PasswordCell.Button.Image = "eye" + (!PasswordCell.Entry.IsPasswordFromToggled ? "_slash" : string.Empty);
}
protected override void OnAppearing()
{
base.OnAppearing();