Browse Source

Make password visibility toggles accessible

pull/25939/head
maliming 2 months ago
parent
commit
24a2315eea
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 21
      framework/src/Volo.Abp.MudBlazorUI/wwwroot/volo.abp.mudblazorui.css
  2. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json
  3. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json
  4. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json
  5. 1
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/el.json
  6. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en-GB.json
  7. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json
  8. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json
  9. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json
  10. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fi.json
  11. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json
  12. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hi.json
  13. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hr.json
  14. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hu.json
  15. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/is.json
  16. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/it.json
  17. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ko.json
  18. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json
  19. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json
  20. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json
  21. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ro-RO.json
  22. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json
  23. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sk.json
  24. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json
  25. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sv.json
  26. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json
  27. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json
  28. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json
  29. 3
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
  30. 10
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.cshtml
  31. 9
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.js
  32. 4
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml
  33. 9
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.js
  34. 36
      modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/UserManagement.razor
  35. 10
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor
  36. 4
      modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml
  37. 4
      modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml
  38. 9
      modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js
  39. 20
      modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.MudBlazor/Pages/TenantManagement/TenantManagement.razor
  40. 5
      modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor
  41. 9
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Create.js
  42. 4
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml

21
framework/src/Volo.Abp.MudBlazorUI/wwwroot/volo.abp.mudblazorui.css

@ -110,3 +110,24 @@
padding-inline-end: 16px; padding-inline-end: 16px;
} }
/* Password visibility toggle: MudBlazor renders the input end-adornment with a hard-coded
tabindex="-1", so a toggle placed there can never be reached by keyboard. The toggle is
rendered as a normal MudIconButton next to the field and pinned over the input row instead.
The offset is measured from the top of the control because the label sits above the input row
and validation text is rendered below it, so the control's own height is not a stable anchor. */
.abp-password-field {
position: relative;
}
.abp-password-field .abp-password-visibility-toggle {
position: absolute;
inset-inline-end: 0;
top: 30px;
transform: translateY(-50%);
}
.abp-password-field .mud-input-slot {
padding-inline-end: 40px;
}

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json

@ -62,6 +62,7 @@
"Theme": "سمة", "Theme": "سمة",
"NotAssigned": "غيرمعتمد", "NotAssigned": "غيرمعتمد",
"EntityActionsDisabledTooltip": "ليس لديك إذن لتنفيذ أي إجراء.", "EntityActionsDisabledTooltip": "ليس لديك إذن لتنفيذ أي إجراء.",
"ResourcePermissions": "أذونات" "ResourcePermissions": "أذونات",
"ShowPassword": "عرض كلمة المرور"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json

@ -62,6 +62,7 @@
"Theme": "Téma", "Theme": "Téma",
"NotAssigned": "Nepřiřazena", "NotAssigned": "Nepřiřazena",
"EntityActionsDisabledTooltip": "Nemáte oprávnění provést žádnou akci.", "EntityActionsDisabledTooltip": "Nemáte oprávnění provést žádnou akci.",
"ResourcePermissions": "Oprávnění" "ResourcePermissions": "Oprávnění",
"ShowPassword": "Zobrazit heslo"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json

@ -62,6 +62,7 @@
"Theme": "Thema", "Theme": "Thema",
"NotAssigned": "Nicht zugeordnet", "NotAssigned": "Nicht zugeordnet",
"EntityActionsDisabledTooltip": "Sie haben keine Berechtigung, Aktionen auszuführen.", "EntityActionsDisabledTooltip": "Sie haben keine Berechtigung, Aktionen auszuführen.",
"ResourcePermissions": "Berechtigungen" "ResourcePermissions": "Berechtigungen",
"ShowPassword": "Passwort anzeigen"
} }
} }

1
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/el.json

@ -57,5 +57,6 @@
"Apply": "Ισχύουν", "Apply": "Ισχύουν",
"EntityActionsDisabledTooltip": "Δεν έχετε δικαίωμα να εκτελέσετε καμία ενέργεια.", "EntityActionsDisabledTooltip": "Δεν έχετε δικαίωμα να εκτελέσετε καμία ενέργεια.",
"ResourcePermissions": "Δικαιώματα", "ResourcePermissions": "Δικαιώματα",
"ShowPassword": "Εμφάνιση κωδικού πρόσβασης"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en-GB.json

@ -57,6 +57,7 @@
"Today": "Today", "Today": "Today",
"Apply": "Apply", "Apply": "Apply",
"EntityActionsDisabledTooltip": "You do not have permission to perform any action.", "EntityActionsDisabledTooltip": "You do not have permission to perform any action.",
"ResourcePermissions": "Permissions" "ResourcePermissions": "Permissions",
"ShowPassword": "Show password"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json

@ -62,6 +62,7 @@
"Theme": "Theme", "Theme": "Theme",
"NotAssigned": "Not Assigned", "NotAssigned": "Not Assigned",
"EntityActionsDisabledTooltip": "You do not have permission to perform any action.", "EntityActionsDisabledTooltip": "You do not have permission to perform any action.",
"ResourcePermissions": "Permissions" "ResourcePermissions": "Permissions",
"ShowPassword": "Show password"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json

@ -62,6 +62,7 @@
"Theme": "Tema", "Theme": "Tema",
"NotAssigned": "No asignado", "NotAssigned": "No asignado",
"EntityActionsDisabledTooltip": "No tienes permisos para realizar ninguna acción.", "EntityActionsDisabledTooltip": "No tienes permisos para realizar ninguna acción.",
"ResourcePermissions": "Permisos" "ResourcePermissions": "Permisos",
"ShowPassword": "Mostrar contraseña"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json

@ -56,6 +56,7 @@
"Today": "امروز", "Today": "امروز",
"Apply": "درخواست دادن", "Apply": "درخواست دادن",
"EntityActionsDisabledTooltip": "شما دسترسی به انجام هر گونه عملیات ندارید.", "EntityActionsDisabledTooltip": "شما دسترسی به انجام هر گونه عملیات ندارید.",
"ResourcePermissions": "مجوزها" "ResourcePermissions": "مجوزها",
"ShowPassword": "نمایش رمز عبور"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fi.json

@ -62,6 +62,7 @@
"Theme": "Teema", "Theme": "Teema",
"NotAssigned": "Ei määritetty", "NotAssigned": "Ei määritetty",
"EntityActionsDisabledTooltip": "Sinulla ei ole oikeutta suorittaa mitään toimintoa.", "EntityActionsDisabledTooltip": "Sinulla ei ole oikeutta suorittaa mitään toimintoa.",
"ResourcePermissions": "Käyttöoikeudet" "ResourcePermissions": "Käyttöoikeudet",
"ShowPassword": "Näytä salasana"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json

@ -62,6 +62,7 @@
"Theme": "Thème", "Theme": "Thème",
"NotAssigned": "Non attribué", "NotAssigned": "Non attribué",
"EntityActionsDisabledTooltip": "Vous n'avez pas les permissions pour effectuer une action.", "EntityActionsDisabledTooltip": "Vous n'avez pas les permissions pour effectuer une action.",
"ResourcePermissions": "Autorisations" "ResourcePermissions": "Autorisations",
"ShowPassword": "Afficher le mot de passe"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hi.json

@ -62,6 +62,7 @@
"Theme": "विषय", "Theme": "विषय",
"NotAssigned": "सौंपा नहीं गया है", "NotAssigned": "सौंपा नहीं गया है",
"EntityActionsDisabledTooltip": "आपके पास कोई कार्रवाई नहीं है जो करने के लिए है।", "EntityActionsDisabledTooltip": "आपके पास कोई कार्रवाई नहीं है जो करने के लिए है।",
"ResourcePermissions": "अनुमतियाँ" "ResourcePermissions": "अनुमतियाँ",
"ShowPassword": "पासवर्ड दिखाएं"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hr.json

@ -62,6 +62,7 @@
"Theme": "Tema", "Theme": "Tema",
"NotAssigned": "Nije dodijeljeno", "NotAssigned": "Nije dodijeljeno",
"EntityActionsDisabledTooltip": "Nemate dozvolu za izvođenje bilo kakve akcije.", "EntityActionsDisabledTooltip": "Nemate dozvolu za izvođenje bilo kakve akcije.",
"ResourcePermissions": "Dozvole" "ResourcePermissions": "Dozvole",
"ShowPassword": "Pokaži lozinku"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hu.json

@ -62,6 +62,7 @@
"Theme": "Téma", "Theme": "Téma",
"NotAssigned": "Nem kijelölt", "NotAssigned": "Nem kijelölt",
"EntityActionsDisabledTooltip": "Nincs jogosultsága bármely művelethez.", "EntityActionsDisabledTooltip": "Nincs jogosultsága bármely művelethez.",
"ResourcePermissions": "Engedélyek" "ResourcePermissions": "Engedélyek",
"ShowPassword": "Jelszó megjelenítése"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/is.json

@ -62,6 +62,7 @@
"Theme": "Þema", "Theme": "Þema",
"NotAssigned": "Ekki skráður", "NotAssigned": "Ekki skráður",
"EntityActionsDisabledTooltip": "Þú hefur ekki aðgang að þessum aðgerðum.", "EntityActionsDisabledTooltip": "Þú hefur ekki aðgang að þessum aðgerðum.",
"ResourcePermissions": "Aðgangsheimildir" "ResourcePermissions": "Aðgangsheimildir",
"ShowPassword": "Sýna lykilorð"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/it.json

@ -62,6 +62,7 @@
"Theme": "Tema", "Theme": "Tema",
"NotAssigned": "Non assegnato", "NotAssigned": "Non assegnato",
"EntityActionsDisabledTooltip": "Non hai i permessi per eseguire alcuna azione.", "EntityActionsDisabledTooltip": "Non hai i permessi per eseguire alcuna azione.",
"ResourcePermissions": "Autorizzazioni" "ResourcePermissions": "Autorizzazioni",
"ShowPassword": "Mostra password"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ko.json

@ -62,6 +62,7 @@
"Theme": "테마", "Theme": "테마",
"NotAssigned": "할당되지 않음", "NotAssigned": "할당되지 않음",
"EntityActionsDisabledTooltip": "작업을 수행할 권한이 없습니다.", "EntityActionsDisabledTooltip": "작업을 수행할 권한이 없습니다.",
"ResourcePermissions": "권한" "ResourcePermissions": "권한",
"ShowPassword": "비밀번호 표시"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json

@ -62,6 +62,7 @@
"Theme": "Thema", "Theme": "Thema",
"NotAssigned": "Niet toegekend", "NotAssigned": "Niet toegekend",
"EntityActionsDisabledTooltip": "U hebt geen toegang tot deze acties.", "EntityActionsDisabledTooltip": "U hebt geen toegang tot deze acties.",
"ResourcePermissions": "Machtigingen" "ResourcePermissions": "Machtigingen",
"ShowPassword": "Wachtwoord tonen"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json

@ -62,6 +62,7 @@
"Theme": "Temat", "Theme": "Temat",
"NotAssigned": "Nie przypisano", "NotAssigned": "Nie przypisano",
"EntityActionsDisabledTooltip": "Nie masz uprawnień do wykonania żadnej akcji.", "EntityActionsDisabledTooltip": "Nie masz uprawnień do wykonania żadnej akcji.",
"ResourcePermissions": "Uprawnienia" "ResourcePermissions": "Uprawnienia",
"ShowPassword": "Pokaż hasło"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json

@ -62,6 +62,7 @@
"Theme": "Tema", "Theme": "Tema",
"NotAssigned": "Não atribuído", "NotAssigned": "Não atribuído",
"EntityActionsDisabledTooltip": "Você não tem permissão para executar qualquer ação.", "EntityActionsDisabledTooltip": "Você não tem permissão para executar qualquer ação.",
"ResourcePermissions": "Permissões" "ResourcePermissions": "Permissões",
"ShowPassword": "Mostrar senha"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ro-RO.json

@ -62,6 +62,7 @@
"Theme": "Temă", "Theme": "Temă",
"NotAssigned": "Nealocat", "NotAssigned": "Nealocat",
"EntityActionsDisabledTooltip": "Nu aveți permisiune să efectuați nicio acțiune.", "EntityActionsDisabledTooltip": "Nu aveți permisiune să efectuați nicio acțiune.",
"ResourcePermissions": "Permisiuni" "ResourcePermissions": "Permisiuni",
"ShowPassword": "Afișează parola"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json

@ -62,6 +62,7 @@
"Theme": "Тема", "Theme": "Тема",
"NotAssigned": "Не назначен", "NotAssigned": "Не назначен",
"EntityActionsDisabledTooltip": "У вас нет прав на выполнение каких-либо действий.", "EntityActionsDisabledTooltip": "У вас нет прав на выполнение каких-либо действий.",
"ResourcePermissions": "Разрешения" "ResourcePermissions": "Разрешения",
"ShowPassword": "Показать пароль"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sk.json

@ -62,6 +62,7 @@
"Theme": "Téma", "Theme": "Téma",
"NotAssigned": "Nepridelené", "NotAssigned": "Nepridelené",
"EntityActionsDisabledTooltip": "Nemáte oprávnenie vykonávať žiadnu akciu.", "EntityActionsDisabledTooltip": "Nemáte oprávnenie vykonávať žiadnu akciu.",
"ResourcePermissions": "Oprávnenia" "ResourcePermissions": "Oprávnenia",
"ShowPassword": "Zobraziť heslo"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json

@ -62,6 +62,7 @@
"Theme": "Tema", "Theme": "Tema",
"NotAssigned": "Ni dodeljena", "NotAssigned": "Ni dodeljena",
"EntityActionsDisabledTooltip": "Nimate pravic za izvajanje kakršne koli dejanje.", "EntityActionsDisabledTooltip": "Nimate pravic za izvajanje kakršne koli dejanje.",
"ResourcePermissions": "Dovoljenja" "ResourcePermissions": "Dovoljenja",
"ShowPassword": "Pokaži geslo"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sv.json

@ -61,6 +61,7 @@
"Theme": "Tema", "Theme": "Tema",
"NotAssigned": "Ej tilldelad", "NotAssigned": "Ej tilldelad",
"EntityActionsDisabledTooltip": "Du har inte tillgång till dessa åtgärder.", "EntityActionsDisabledTooltip": "Du har inte tillgång till dessa åtgärder.",
"ResourcePermissions": "Behörigheter" "ResourcePermissions": "Behörigheter",
"ShowPassword": "Visa lösenord"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json

@ -62,6 +62,7 @@
"Theme": "Tema", "Theme": "Tema",
"NotAssigned": "Atanmadı", "NotAssigned": "Atanmadı",
"EntityActionsDisabledTooltip": "Bu işlemi gerçekleştirmek için yeterli yetkiniz yok.", "EntityActionsDisabledTooltip": "Bu işlemi gerçekleştirmek için yeterli yetkiniz yok.",
"ResourcePermissions": "İzinler" "ResourcePermissions": "İzinler",
"ShowPassword": "Şifreyi göster"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json

@ -62,6 +62,7 @@
"Theme": "chủ đề", "Theme": "chủ đề",
"NotAssigned": "Không được chỉ định", "NotAssigned": "Không được chỉ định",
"EntityActionsDisabledTooltip": "Bạn không có quyền thực hiện bất kỳ hành động nào.", "EntityActionsDisabledTooltip": "Bạn không có quyền thực hiện bất kỳ hành động nào.",
"ResourcePermissions": "Quyền" "ResourcePermissions": "Quyền",
"ShowPassword": "Hiện mật khẩu"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json

@ -62,6 +62,7 @@
"Theme": "主题", "Theme": "主题",
"NotAssigned": "未分配", "NotAssigned": "未分配",
"EntityActionsDisabledTooltip": "您没有权限执行任何操作。", "EntityActionsDisabledTooltip": "您没有权限执行任何操作。",
"ResourcePermissions": "权限" "ResourcePermissions": "权限",
"ShowPassword": "显示密码"
} }
} }

3
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json

@ -62,6 +62,7 @@
"Theme": "主題", "Theme": "主題",
"NotAssigned": "未分配", "NotAssigned": "未分配",
"EntityActionsDisabledTooltip": "您沒有權限執行任何操作。", "EntityActionsDisabledTooltip": "您沒有權限執行任何操作。",
"ResourcePermissions": "權限" "ResourcePermissions": "權限",
"ShowPassword": "顯示密碼"
} }
} }

10
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.cshtml

@ -1,7 +1,9 @@
@using Volo.Abp.Account.Localization @using Localization.Resources.AbpUi
@using Volo.Abp.Account.Localization
@using Volo.Abp.Users @using Volo.Abp.Users
@using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.AspNetCore.Mvc.Localization
@inject IHtmlLocalizer<AccountResource> L @inject IHtmlLocalizer<AccountResource> L
@inject IHtmlLocalizer<AbpUiResource> UiL
@inject ICurrentUser CurrentUser @inject ICurrentUser CurrentUser
@model Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Password.AccountProfilePasswordManagementGroupViewComponent.ChangePasswordInfoModel @model Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Password.AccountProfilePasswordManagementGroupViewComponent.ChangePasswordInfoModel
@ -13,21 +15,21 @@
<label asp-for="CurrentPassword" class="form-label"></label> <label asp-for="CurrentPassword" class="form-label"></label>
<div class="input-group"> <div class="input-group">
<input type="password" class="form-control" autocomplete="new-password" asp-for="CurrentPassword"/> <input type="password" class="form-control" autocomplete="new-password" asp-for="CurrentPassword"/>
<button class="btn btn-secondary password-visibility-button" type="button"><i class="fa fa-eye-slash" aria-hidden="true"></i></button> <button class="btn btn-secondary password-visibility-button" type="button" aria-label="@UiL["ShowPassword"]" aria-pressed="false"><i class="fa fa-eye-slash" aria-hidden="true"></i></button>
</div> </div>
<span asp-validation-for="CurrentPassword"></span><br/> <span asp-validation-for="CurrentPassword"></span><br/>
} }
<label asp-for="NewPassword" class="form-label"></label> <label asp-for="NewPassword" class="form-label"></label>
<div class="input-group"> <div class="input-group">
<input type="password" class="form-control" autocomplete="new-password" asp-for="NewPassword"/> <input type="password" class="form-control" autocomplete="new-password" asp-for="NewPassword"/>
<button class="btn btn-secondary password-visibility-button" type="button" ><i class="fa fa-eye-slash" aria-hidden="true"></i></button> <button class="btn btn-secondary password-visibility-button" type="button" aria-label="@UiL["ShowPassword"]" aria-pressed="false"><i class="fa fa-eye-slash" aria-hidden="true"></i></button>
</div> </div>
<span asp-validation-for="NewPassword"></span><br/> <span asp-validation-for="NewPassword"></span><br/>
<label asp-for="NewPasswordConfirm" class="form-label"></label> <label asp-for="NewPasswordConfirm" class="form-label"></label>
<div class="input-group"> <div class="input-group">
<input type="password" class="form-control" autocomplete="new-password" asp-for="NewPasswordConfirm"/> <input type="password" class="form-control" autocomplete="new-password" asp-for="NewPasswordConfirm"/>
<button class="btn btn-secondary password-visibility-button" type="button"><i class="fa fa-eye-slash" aria-hidden="true"></i></button> <button class="btn btn-secondary password-visibility-button" type="button" aria-label="@UiL["ShowPassword"]" aria-pressed="false"><i class="fa fa-eye-slash" aria-hidden="true"></i></button>
</div> </div>
<span asp-validation-for="NewPasswordConfirm"></span> <span asp-validation-for="NewPasswordConfirm"></span>
</div> </div>

9
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/Default.js

@ -6,12 +6,9 @@
return; return;
} }
if (passwordInput.attr("type") === "password") { let isRevealing = passwordInput.attr("type") === "password";
passwordInput.attr("type", "text"); passwordInput.attr("type", isRevealing ? "text" : "password");
} button.attr("aria-pressed", isRevealing);
else {
passwordInput.attr("type", "password");
}
let icon = button.find("i"); let icon = button.find("i");
if (icon) { if (icon) {

4
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml

@ -1,4 +1,5 @@
@page @page
@using Localization.Resources.AbpUi
@using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.Account.Localization @using Volo.Abp.Account.Localization
@using Volo.Abp.Account.Settings @using Volo.Abp.Account.Settings
@ -8,6 +9,7 @@
@using Volo.Abp.Settings @using Volo.Abp.Settings
@model Volo.Abp.Account.Web.Pages.Account.LoginModel @model Volo.Abp.Account.Web.Pages.Account.LoginModel
@inject IHtmlLocalizer<AccountResource> L @inject IHtmlLocalizer<AccountResource> L
@inject IHtmlLocalizer<AbpUiResource> UiL
@inject IThemeManager ThemeManager @inject IThemeManager ThemeManager
@inject Volo.Abp.Settings.ISettingProvider SettingProvider @inject Volo.Abp.Settings.ISettingProvider SettingProvider
@ -53,7 +55,7 @@
<label asp-for="LoginInput.Password" class="form-label"></label> <label asp-for="LoginInput.Password" class="form-label"></label>
<div class="input-group"> <div class="input-group">
<input type="password" class="form-control" autocomplete="new-password" maxlength="@IdentityUserConsts.MaxPasswordLength" asp-for="LoginInput.Password" /> <input type="password" class="form-control" autocomplete="new-password" maxlength="@IdentityUserConsts.MaxPasswordLength" asp-for="LoginInput.Password" />
<button class="btn btn-secondary" type="button" id="PasswordVisibilityButton"><i class="fa fa-eye-slash" aria-hidden="true"></i></button> <button class="btn btn-secondary" type="button" id="PasswordVisibilityButton" aria-label="@UiL["ShowPassword"]" aria-pressed="false"><i class="fa fa-eye-slash" aria-hidden="true"></i></button>
</div> </div>
<span asp-validation-for="LoginInput.Password"></span> <span asp-validation-for="LoginInput.Password"></span>
</div> </div>

9
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.js

@ -6,12 +6,9 @@ $(function () {
return; return;
} }
if (passwordInput.attr("type") === "password") { let isRevealing = passwordInput.attr("type") === "password";
passwordInput.attr("type", "text"); passwordInput.attr("type", isRevealing ? "text" : "password");
} button.attr("aria-pressed", isRevealing);
else {
passwordInput.attr("type", "password");
}
let icon = button.find("i"); let icon = button.find("i");
if (icon) { if (icon) {

36
modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/UserManagement.razor

@ -62,14 +62,18 @@
Label="@L["DisplayName:Name"]" /> Label="@L["DisplayName:Name"]" />
<MudTextField Margin="Margin.Dense" @bind-Value="@NewEntity.Surname" <MudTextField Margin="Margin.Dense" @bind-Value="@NewEntity.Surname"
Label="@L["DisplayName:Surname"]" /> Label="@L["DisplayName:Surname"]" />
<MudTextField Margin="Margin.Dense" @bind-Value="@NewEntity.Password" <div class="abp-password-field">
Label="@L["DisplayName:Password"]" <MudTextField Margin="Margin.Dense" @bind-Value="@NewEntity.Password"
InputType="@(_showPassword ? InputType.Text : InputType.Password)" Label="@L["DisplayName:Password"]"
Required="true" InputType="@(_showPassword ? InputType.Text : InputType.Password)"
RequiredError="@L["The {0} field is required.", L["DisplayName:Password"]]" Required="true"
Adornment="Adornment.End" RequiredError="@L["The {0} field is required.", L["DisplayName:Password"]]" />
AdornmentIcon="@(_showPassword ? Icons.Material.Filled.Visibility : Icons.Material.Filled.VisibilityOff)" <MudIconButton Class="abp-password-visibility-toggle"
OnAdornmentClick="@(() => _showPassword = !_showPassword)" /> Icon="@(_showPassword ? Icons.Material.Filled.Visibility : Icons.Material.Filled.VisibilityOff)"
aria-label="@UiLocalizer["ShowPassword"]"
aria-pressed="@(_showPassword ? "true" : "false")"
OnClick="@(() => _showPassword = !_showPassword)" />
</div>
<MudTextField Margin="Margin.Dense" @bind-Value="@NewEntity.Email" <MudTextField Margin="Margin.Dense" @bind-Value="@NewEntity.Email"
Label="@L["DisplayName:Email"]" Label="@L["DisplayName:Email"]"
Required="true" Required="true"
@ -128,12 +132,16 @@
Label="@L["DisplayName:Name"]" /> Label="@L["DisplayName:Name"]" />
<MudTextField Margin="Margin.Dense" @bind-Value="@EditingEntity.Surname" <MudTextField Margin="Margin.Dense" @bind-Value="@EditingEntity.Surname"
Label="@L["DisplayName:Surname"]" /> Label="@L["DisplayName:Surname"]" />
<MudTextField Margin="Margin.Dense" @bind-Value="@EditingEntity.Password" <div class="abp-password-field">
Label="@L["DisplayName:Password"]" <MudTextField Margin="Margin.Dense" @bind-Value="@EditingEntity.Password"
InputType="@(_showPassword ? InputType.Text : InputType.Password)" Label="@L["DisplayName:Password"]"
Adornment="Adornment.End" InputType="@(_showPassword ? InputType.Text : InputType.Password)" />
AdornmentIcon="@(_showPassword ? Icons.Material.Filled.Visibility : Icons.Material.Filled.VisibilityOff)" <MudIconButton Class="abp-password-visibility-toggle"
OnAdornmentClick="@(() => _showPassword = !_showPassword)" /> Icon="@(_showPassword ? Icons.Material.Filled.Visibility : Icons.Material.Filled.VisibilityOff)"
aria-label="@UiLocalizer["ShowPassword"]"
aria-pressed="@(_showPassword ? "true" : "false")"
OnClick="@(() => _showPassword = !_showPassword)" />
</div>
<MudTextField Margin="Margin.Dense" @bind-Value="@EditingEntity.Email" <MudTextField Margin="Margin.Dense" @bind-Value="@EditingEntity.Email"
Label="@L["DisplayName:Email"]" Label="@L["DisplayName:Email"]"
Required="true" Required="true"

10
modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor

@ -102,8 +102,9 @@
</TextInput> </TextInput>
</Addon> </Addon>
<Addon AddonType="AddonType.End"> <Addon AddonType="AddonType.End">
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))"> <Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))"
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" /> aria-label="@UiLocalizer["ShowPassword"]" aria-pressed="@(ShowPassword ? "true" : "false")">
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" aria-hidden="true" />
</Button> </Button>
</Addon> </Addon>
</Addons> </Addons>
@ -228,8 +229,9 @@
</TextInput> </TextInput>
</Addon> </Addon>
<Addon AddonType="AddonType.End"> <Addon AddonType="AddonType.End">
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))"> <Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))"
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" /> aria-label="@UiLocalizer["ShowPassword"]" aria-pressed="@(ShowPassword ? "true" : "false")">
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" aria-hidden="true" />
</Button> </Button>
</Addon> </Addon>
</Addons> </Addons>

4
modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml

@ -1,4 +1,5 @@
@page @page
@using Localization.Resources.AbpUi
@using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Localization @using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@ -10,6 +11,7 @@
@using Volo.Abp.Identity @using Volo.Abp.Identity
@model CreateModalModel @model CreateModalModel
@inject IHtmlLocalizer<IdentityResource> L @inject IHtmlLocalizer<IdentityResource> L
@inject IHtmlLocalizer<AbpUiResource> UiL
@inject IStringLocalizerFactory StringLocalizerFactory @inject IStringLocalizerFactory StringLocalizerFactory
@{ @{
@ -30,7 +32,7 @@
<label asp-for="UserInfo.Password" class="form-label">@L["Password"] *</label> <label asp-for="UserInfo.Password" class="form-label">@L["Password"] *</label>
<div class="input-group"> <div class="input-group">
<input type="password" class="form-control" autocomplete="new-password" maxlength="@IdentityUserConsts.MaxPasswordLength" asp-for="UserInfo.Password" /> <input type="password" class="form-control" autocomplete="new-password" maxlength="@IdentityUserConsts.MaxPasswordLength" asp-for="UserInfo.Password" />
<button class="btn btn-secondary" type="button" id="PasswordVisibilityButton"><i class="fa fa-eye-slash" aria-hidden="true"></i></button> <button class="btn btn-secondary" type="button" id="PasswordVisibilityButton" aria-label="@UiL["ShowPassword"]" aria-pressed="false"><i class="fa fa-eye-slash" aria-hidden="true"></i></button>
</div> </div>
<span asp-validation-for="UserInfo.Password"></span> <span asp-validation-for="UserInfo.Password"></span>
</div> </div>

4
modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml

@ -1,4 +1,5 @@
@page @page
@using Localization.Resources.AbpUi
@using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Localization @using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@ -10,6 +11,7 @@
@using Volo.Abp.Identity @using Volo.Abp.Identity
@model EditModalModel @model EditModalModel
@inject IHtmlLocalizer<IdentityResource> L @inject IHtmlLocalizer<IdentityResource> L
@inject IHtmlLocalizer<AbpUiResource> UiL
@inject IStringLocalizerFactory StringLocalizerFactory @inject IStringLocalizerFactory StringLocalizerFactory
@{ @{
Layout = null; Layout = null;
@ -30,7 +32,7 @@
<label asp-for="UserInfo.Password" class="form-label">@L["Password"]</label> <label asp-for="UserInfo.Password" class="form-label">@L["Password"]</label>
<div class="input-group"> <div class="input-group">
<input type="password" class="form-control" autocomplete="new-password" maxlength="@IdentityUserConsts.MaxPasswordLength" asp-for="UserInfo.Password"/> <input type="password" class="form-control" autocomplete="new-password" maxlength="@IdentityUserConsts.MaxPasswordLength" asp-for="UserInfo.Password"/>
<button class="btn btn-secondary" type="button" id="PasswordVisibilityButton"> <button class="btn btn-secondary" type="button" id="PasswordVisibilityButton" aria-label="@UiL["ShowPassword"]" aria-pressed="false">
<i class="fa fa-eye-slash" aria-hidden="true"></i> <i class="fa fa-eye-slash" aria-hidden="true"></i>
</button> </button>
</div> </div>

9
modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js

@ -11,12 +11,9 @@
return; return;
} }
if(passwordInput.attr("type") === "password") { var isRevealing = passwordInput.attr("type") === "password";
passwordInput.attr("type", "text"); passwordInput.attr("type", isRevealing ? "text" : "password");
} button.attr("aria-pressed", isRevealing);
else {
passwordInput.attr("type", "password");
}
var icon = button.find("i"); var icon = button.find("i");
if(icon) { if(icon) {

20
modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.MudBlazor/Pages/TenantManagement/TenantManagement.razor

@ -48,14 +48,18 @@
Required="true" Required="true"
RequiredError="@L["ThisFieldIsRequired."]" RequiredError="@L["ThisFieldIsRequired."]"
InputType="InputType.Email" /> InputType="InputType.Email" />
<MudTextField Margin="Margin.Dense" @bind-Value="@NewEntity.AdminPassword" <div class="abp-password-field">
Label="@L["DisplayName:AdminPassword"]" <MudTextField Margin="Margin.Dense" @bind-Value="@NewEntity.AdminPassword"
Required="true" Label="@L["DisplayName:AdminPassword"]"
RequiredError="@L["ThisFieldIsRequired."]" Required="true"
InputType="@(ShowPassword ? InputType.Text : InputType.Password)" RequiredError="@L["ThisFieldIsRequired."]"
Adornment="Adornment.End" InputType="@(ShowPassword ? InputType.Text : InputType.Password)" />
AdornmentIcon="@(ShowPassword ? Icons.Material.Filled.Visibility : Icons.Material.Filled.VisibilityOff)" <MudIconButton Class="abp-password-visibility-toggle"
OnAdornmentClick="@TogglePasswordVisibility" /> Icon="@(ShowPassword ? Icons.Material.Filled.Visibility : Icons.Material.Filled.VisibilityOff)"
aria-label="@UiLocalizer["ShowPassword"]"
aria-pressed="@(ShowPassword ? "true" : "false")"
OnClick="@TogglePasswordVisibility" />
</div>
<MudExtensionProperties TEntityType="TenantCreateDto" TResourceType="AbpTenantManagementResource" Entity="@NewEntity" LH="@_localizerHelper" ModalType="ExtensionPropertyModalType.CreateModal" /> <MudExtensionProperties TEntityType="TenantCreateDto" TResourceType="AbpTenantManagementResource" Entity="@NewEntity" LH="@_localizerHelper" ModalType="ExtensionPropertyModalType.CreateModal" />
</MudForm> </MudForm>
</DialogContent> </DialogContent>

5
modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor

@ -77,8 +77,9 @@
</TextInput> </TextInput>
</Addon> </Addon>
<Addon AddonType="AddonType.End"> <Addon AddonType="AddonType.End">
<Button Color="Color.Secondary" Clicked="@(() => TogglePasswordVisibility())"> <Button Color="Color.Secondary" Clicked="@(() => TogglePasswordVisibility())"
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" /> aria-label="@UiLocalizer["ShowPassword"]" aria-pressed="@(ShowPassword ? "true" : "false")">
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" aria-hidden="true" />
</Button> </Button>
</Addon> </Addon>
</Addons> </Addons>

9
modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Create.js

@ -6,12 +6,9 @@ $(document).ready(function () {
return; return;
} }
if (passwordInput.attr("type") === "password") { let isRevealing = passwordInput.attr("type") === "password";
passwordInput.attr("type", "text"); passwordInput.attr("type", isRevealing ? "text" : "password");
} button.attr("aria-pressed", isRevealing);
else {
passwordInput.attr("type", "password");
}
let icon = button.find("i"); let icon = button.find("i");
if (icon) { if (icon) {

4
modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml

@ -1,4 +1,5 @@
@page @page
@using Localization.Resources.AbpUi
@using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Localization @using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal @using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@ -10,6 +11,7 @@
@using Volo.Abp.TenantManagement; @using Volo.Abp.TenantManagement;
@model CreateModalModel @model CreateModalModel
@inject IHtmlLocalizer<AbpTenantManagementResource> L @inject IHtmlLocalizer<AbpTenantManagementResource> L
@inject IHtmlLocalizer<AbpUiResource> UiL
@inject IStringLocalizerFactory StringLocalizerFactory @inject IStringLocalizerFactory StringLocalizerFactory
@{ @{
Layout = null; Layout = null;
@ -27,7 +29,7 @@
<span> * </span> <span> * </span>
<div class="input-group"> <div class="input-group">
<input type="password" class="form-control" maxlength="@TenantConsts.MaxPasswordLength" asp-for="Tenant.AdminPassword" /> <input type="password" class="form-control" maxlength="@TenantConsts.MaxPasswordLength" asp-for="Tenant.AdminPassword" />
<button class="btn btn-secondary" type="button" id="PasswordVisibilityButton"> <button class="btn btn-secondary" type="button" id="PasswordVisibilityButton" aria-label="@UiL["ShowPassword"]" aria-pressed="false">
<i class="fa fa-eye-slash" aria-hidden="true"></i> <i class="fa fa-eye-slash" aria-hidden="true"></i>
</button> </button>
</div> </div>

Loading…
Cancel
Save