This project has been transferred from ngx-material-password-strength to @angular-material-extensions/password-strength
Do you have any question or suggestion ? Please do not hesitate to contact us! Alternatively, provide a PR | open an appropriate issue here
If you like this project, support angular-material-extensions by starring :star: and sharing it :loudspeaker:
View all the directives and components in action at https://angular-material-extensions.github.io/password-strength
<mat-password-strength> used to calculate and display the strength of a provided password
<mat-password-strength-info> used to display more information about the strength of a provided password
<mat-pass-toggle-visibility> used to show/hide the password provided in the input element
7.xIf Angular Material Design is not setup, just run ng add @angular/material learn more
Now add the library via the angular schematics
shell
ng add @angular-material-extensions/password-strength
Now install @angular-material-extensions/password-strength via:
shell
npm install --save @angular-material-extensions/password-strength
Note:If you are using
SystemJS, you should adjust your configuration to point to the UMD bundle. In your systemjs config file,mapneeds to tell the System loader where to look for@angular-material-extensions/password-strength:js { '@angular-material-extensions/password-strength';: 'node_modules/@angular-material-extensions/password-strength/bundles/password-strength.umd.js', }
-> follow the instructions here
Once installed you need to import the main module:
js
import { MatPasswordStrengthModule } from '@angular-material-extensions/password-strength';
The only remaining part is to list the imported module in your application module. The exact method will be slightly
different for the root (top-level) module for which you should end up with the code similar to (notice MatPasswordStrengthModule .forRoot()):
```js
import { MatPasswordStrengthModule } from '@angular-material-extensions/password-strength';
@NgModule({
declarations: [AppComponent, ...],
imports: [MatPasswordStrengthModule.forRoot(), ...],
bootstrap: [AppComponent]
})
export class AppModule {
}
```
Other modules in your application can simply import MatPasswordStrengthModule:
```js import { MatPasswordStrengthModule } from '@angular-material-extensions/password-strength';
@NgModule({ declarations: [OtherComponent, ...], imports: [MatPasswordStrengthModule, ...], }) export class OtherModule { } ```
<mat-password-strength> used to calculate and display the strength of a provided password - see the demo examples| option | bind | type | default | description |
|:-------------------|:--------:|:------:|:------------:|:-------------------------------------------------------------------------------------------------|
| password | Input() | string | - | the password to calculate its strength
| customValidator | Input() | RegExp | - | custom regex validator
| externalError | Input() | boolean | false | used to change the color of the password to warn if an external error occurs
| enableLengthRule | Input() | boolean | true | whether to validate the length of the password
| enableLowerCaseLetterRule | Input() | boolean | true | whether a lowercase letter is optional
| enableUpperCaseLetterRule | Input() | boolean | true | whether a uppercase letter is optional
| enableDigitRule | Input() | boolean | true | whether a digit char is optional
| enableSpecialCharRule | Input() | boolean | true | whether a special char is optional
| min | Input() | number | 8 | the minimum length of the password
| max | Input() | number | 30 | the maximum length of the password
| warnThreshold | Input() | number | 21 | password strength less than this number shows the warn color
| accentThreshold | Input() | number | 81 | password strength less than this number shows the accent color
| onStrengthChanged | Output() | number | - | emits the strength of the provided password in % e.g: 20%, 40%, 60%, 80% or 100%
<mat-password-strength-info> used to display more information about the strength of a provided password - see the demo examples| option | bind | type | default | description |
|:-------------------|:--------:|:------:|:------------:|:-------------------------------------------------------------------------------------------------|
| passwordComponent | Input() | PasswordStrengthComponent | - | the password component used in the template in order to display more info related to the provided password
| enableScoreInfo | Input() | boolean| false | whether to show the password's score in %
| lowerCaseCriteriaMsg | Input() | string | contains at least one lower character | an appropriate msg for the lower case %
| upperCaseCriteriaMsg | Input() | string | contains at least one upper character | an appropriate msg for the upper case %
| digitsCriteriaMsg | Input() | string | contains at least one digit character | an appropriate msg for the digit case %
| specialCharsCriteriaMsg | Input() | string | contains at least one special character | an appropriate msg for the special case %
| customCharsCriteriaMsg | Input() | string | contains at least one custom character | an appropriate msg for the custom validator case %
| minCharsCriteriaMsg | Input() | string | contains at least ${this.passwordComponent.min} characters | an appropriate msg for the minimum number of chars %
<mat-pass-toggle-visibility> used to show/hide the password provided in the input element| option | bind | type | default | description |
|:-------------------|:--------:|:------:|:------------:|:-------------------------------------------------------------------------------------------------|
| isVisible | Input() | boolean | false | whether the password is visible or hidden
add the @angular-material-extensions/password-strength element to your template:
html
<mat-password-strength [password]="password.value">
</mat-password-strength>
This will display only the material password strength meter in form of a progress without any input fields or similar.
@angular-material-extensions/password-strength 's component.NOTE: In order to repaint the mat-form-field correctly after changing the value of the password's strength, please consider to change the detection strategy for the parent component -->
```typescript import {ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation} from '@angular/core'; import {Title} from '@angular/platform-browser'; import {MatSlideToggleChange} from '@angular/material'; import {MatPasswordStrengthComponent} from '@angular-material-extensions/password-strength';
@Component({ selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.scss'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }) export class HomeComponent implements OnInit {} ```
```html
<mat-password-strength #passwordComponent
(onStrengthChanged)="onStrengthChanged($event)"
[password]="password.value">
</mat-password-strength>
</div>```
learn more about mat-form-field
```html
Password's strength = {{passwordComponent.strength}} %100
mat-pass-toggle-visibility to your mat-form-fieldtogglemat-pass-toggle-visibility component <input matInput [type]="toggle.type"/>html
<mat-form-field appearance="outline" style="width: 100%" [color]="passwordComponent.color">
<mat-label>Password</mat-label>
<!-- HERE DOWN :D-->
<mat-pass-toggle-visibility #toggle matSuffix></mat-pass-toggle-visibility>
<!-- THERE ABOVE ;)-->
<input matInput #password
[type]="toggle.type"
required
placeholder="Password">
<mat-hint align="end" aria-live="polite">
{{password.value.length}} / 25
</mat-hint>
</mat-form-field>
passwordComponentWithValidation (or whatever you want) inside the elemente.g:
html
<mat-password-strength #passwordComponentWithValidation
[password]="passwordWithValidation.value">
</mat-password-strength>
bind the form controller of the mat-password-strength to the input element
passwordComponentWithValidation.passwordFormControl[formControl]="passwordComponentWithValidation.passwordFormControl"Full example - see below
```html
this will looks like -->
please consider to use the customValidator input (see below)
```html <mat-slide-toggle #toggle>Show Password Details
<mat-form-field appearance="outline" style="width: 100%" [color]="passwordComponent.color">
<mat-password-strength #passwordComponent (onStrengthChanged)="onStrengthChanged($event)" [password]="password.value" [customValidator]="pattern">
<mat-password-strength-info *ngIf="toggle.checked" [passwordComponent]="passwordComponent6" customCharsCriteriaMsg="1 german special chars is required" [enableScoreInfo]="true">
```
ts
pattern = new RegExp(/^(?=.*?[äöüÄÖÜß])/);
green css class to the mat-password-strengthhtml
<mat-password-strength #passwordComponent
class="green"
[password]="password.value">
</mat-password-strength>
for more examples please visit this URL : (https://angular-material-extensions.github.io/password-strength/examples
Please checkout the full documentation here or follow the official tutorial
Drop an email to: Anthony Nahas
or open an appropriate issue
let us chat on Gitter
Built by and for developers :heart: we will help you :punch:

This project is supported by jetbrains with 1 ALL PRODUCTS PACK OS LICENSE incl. webstorm
Copyright (c) 2019 Anthony Nahas. Licensed under the MIT License (MIT)