Blazor - Get Started with Smart.PasswordTextBox
Setup The Project
Follow the Getting Started guide to set up your Blazor Application with Smart UI.
Setup Basic PasswordTextBox
Smart.PasswordTextBox is a password input element with additional built-in features such as reveal password and strength measuring.
The list of avaible options is set using the DataSource property.
- Add the PasswordTextBox component to the Pages/Index.razor file
<PasswordTextBox></PasswordTextBox>
- Optionally, set the Name, Placeholdeer properties.
<PasswordTextBox Placeholder="Enter password" Name="password"></PasswordTextBox>
PasswordTextBox Customization
Smart.PasswordTextBox can be styled in different ways by setting the Class property.
The PasswordTextBox can be default, outlined or underlined
<PasswordTextBox Class="underlined"></PasswordTextBox>
Reveal Password
Revealing password can help users check if they have made any mistakes while typing their passwords.
It is enabled with the ShowPasswordIcon property.
<PasswordTextBox Class="underlined" ShowPasswordIcon></PasswordTextBox>
Password Strength
By default, password strength is measured by the length of the password. The position of the message can be changed with TooltipPosition
<PasswordTextBox ShowPasswordStrength></PasswordTextBox>
In addition, it is possible to set a custom template and customize the look of the tooltip with the TooltipTemplate property.
<template id="tooltip-template">
<span style="font-weight:bold; color:red">{{value}}</span>
</template>
<PasswordTextBox ShowPasswordStrength TooltipTemplate="@template"></PasswordTextBox>
@code {
string template = "tooltip-template";
}
Custom Password Strength
Smart.PasswordTextBox allows you to set custom function, which determines the strength of the password. To set the function, it is necessary to use JSInterop:
@inject IJSRuntime JS
Using JSInterop, inoke a custom JS function called "customStrength":
protected override void OnInitialized()
{
base.OnInitialized();
JS.InvokeVoidAsync("customStrength");
}
Inside the \_Host.cshtml file (server-side Blazor) or wwwroot/index.html (client-side WebAssembly Blazor), create a function that will attach a custom function to the customStrength property.
(function (global) {
global.customStrength = function() {
setTimeout(function(){
document.querySelector("smart-password-text-box").passwordStrength = function (password, allowedSymbols) {
const passwordLength = password.length;
if (passwordLength < 3) {
return 'short' ;
} else if (passwordLength < 5) {
return 'weak';
} else if(password.includes('!')){
return 'strong';
}
};
}, 0)
}
})(window);
Our custom function will consider a password "strong" only if it contains !
PasswordTextBox Events
Smart.PasswordTextBox provides multiple events that can help you expand the component's functionality.
Each event object has unique event.detail parameters.
OnChange- triggered when the value of the element is changed.
Event Details: dynamic oldValue, dynamic valueOnChanging- triggered on each key up event of the PasswordTextBox, if the value is changed.
Event Details: dynamic oldValue, dynamic value
The demo below uses the OnChanging Event to check whether the password contains the required @ symbol:
<PasswordTextBox @ref="@field" Placeholder="Confirm password" Name="password" OnChanging="OnChanging" ShowPasswordIcon></PasswordTextBox>
<h3>@message</h3>
@code {
PasswordTextBox field;
string message = "";
private async void OnChanging(Event ev){
PasswordTextBoxChangingEventDetail detail = ev["Detail"];
if(!detail.Value.Contains("@")){
message = "Passwords must contain @";
}
else{
message = "Passwords is valid";
}
}
}
Two-way Value Binding
The PasswordTextBox component also supports two-way value binding:
<h3>@textValue</h3>
<PasswordTextBox @bind-Value = "@textValue"></PasswordTextBox>
@code{
string textValue = "";
}