Password cell type
Use the password cell type to mask confidential values by rendering entered characters as symbols.
Overview
The password cell type behaves like a text cell, the only difference being that it masks its value using asterisks in the cell renderer. An <input type="password"> field is used for the cell editor. Data is stored in the data source as plain text.
/* file: app.component.ts */import { Component } from '@angular/core';import { GridSettings } from '@handsontable/angular-wrapper';
@Component({ selector: 'example1-password-cell-type', standalone: false, template: ` <div> <hot-table [data]="data" [settings]="gridSettings"></hot-table> </div>`,})export class Example1PasswordCellTypeComponent {
readonly data = [ { id: 1, name: { first: 'Chris', last: 'Right' }, password: 'plainTextPassword', }, { id: 2, name: { first: 'John', last: 'Honest' }, password: 'txt' }, { id: 3, name: { first: 'Greg', last: 'Well' }, password: 'longer' }, ];
readonly gridSettings: GridSettings = { colHeaders: ['ID', 'First name', 'Last name', 'Password'], height: 'auto', autoWrapRow: true, autoWrapCol: true, columns: [ { data: 'id' }, { data: 'name.first' }, { data: 'name.last' }, { data: 'password', type: 'password' }, ] };}/* end-file */
/* file: app.module.ts */import { NgModule, ApplicationConfig } from '@angular/core';import { BrowserModule } from '@angular/platform-browser';import { registerAllModules } from 'handsontable/registry';import { HOT_GLOBAL_CONFIG, HotGlobalConfig, HotTableModule } from '@handsontable/angular-wrapper';import { CommonModule } from '@angular/common';import { NON_COMMERCIAL_LICENSE } from '@handsontable/angular-wrapper';/* start:skip-in-compilation */import { Example1PasswordCellTypeComponent } from './app.component';/* end:skip-in-compilation */
// register Handsontable's modulesregisterAllModules();
export const appConfig: ApplicationConfig = { providers: [ { provide: HOT_GLOBAL_CONFIG, useValue: { license: NON_COMMERCIAL_LICENSE, } as HotGlobalConfig } ],};
@NgModule({ imports: [ BrowserModule, HotTableModule, CommonModule ], declarations: [ Example1PasswordCellTypeComponent ], providers: [...appConfig.providers], bootstrap: [ Example1PasswordCellTypeComponent ]})
export class AppModule { }/* end-file */<div> <example1-password-cell-type></example1-password-cell-type></div>Fixed hash length
By default, every hash has a length equal to the length of its corresponding value. Use option hashLength to set a fixed hash length.
/* file: app.component.ts */import { Component } from '@angular/core';import { GridSettings } from '@handsontable/angular-wrapper';
@Component({ selector: 'example2-password-cell-type', standalone: false, template: ` <div> <hot-table [data]="data" [settings]="gridSettings"></hot-table> </div>`,})export class Example2PasswordCellTypeComponent {
readonly data = [ { id: 1, name: { first: 'Chris', last: 'Right' }, password: 'plainTextPassword', }, { id: 2, name: { first: 'John', last: 'Honest' }, password: 'txt' }, { id: 3, name: { first: 'Greg', last: 'Well' }, password: 'longer' }, ];
readonly gridSettings: GridSettings = { colHeaders: ['ID', 'First name', 'Last name', 'Password'], height: 'auto', autoWrapRow: true, autoWrapCol: true, columns: [ { data: 'id' }, { data: 'name.first' }, { data: 'name.last' }, { data: 'password', type: 'password', hashLength: 10 }, ] };}/* end-file */
/* file: app.module.ts */import { NgModule, ApplicationConfig } from '@angular/core';import { BrowserModule } from '@angular/platform-browser';import { registerAllModules } from 'handsontable/registry';import { HOT_GLOBAL_CONFIG, HotGlobalConfig, HotTableModule } from '@handsontable/angular-wrapper';import { CommonModule } from '@angular/common';import { NON_COMMERCIAL_LICENSE } from '@handsontable/angular-wrapper';/* start:skip-in-compilation */import { Example2PasswordCellTypeComponent } from './app.component';/* end:skip-in-compilation */
// register Handsontable's modulesregisterAllModules();
export const appConfig: ApplicationConfig = { providers: [ { provide: HOT_GLOBAL_CONFIG, useValue: { license: NON_COMMERCIAL_LICENSE, } as HotGlobalConfig } ],};
@NgModule({ imports: [ BrowserModule, HotTableModule, CommonModule ], declarations: [ Example2PasswordCellTypeComponent ], providers: [...appConfig.providers], bootstrap: [ Example2PasswordCellTypeComponent ]})
export class AppModule { }/* end-file */<div> <example2-password-cell-type></example2-password-cell-type></div>Custom hash symbol
By default, every hash consists of asterisks *. Use the option hashSymbol to set a custom hash symbol. You can use any character, entity, or even HTML. Note that you can’t change the symbol used by the input field due to browser limitations.
/* file: app.component.ts */import { Component } from '@angular/core';import { GridSettings } from '@handsontable/angular-wrapper';
@Component({ selector: 'example3-password-cell-type', standalone: false, template: ` <div> <hot-table [data]="data" [settings]="gridSettings"></hot-table> </div>`,})export class Example3PasswordCellTypeComponent {
readonly data = [ { id: 1, name: { first: 'Chris', last: 'Right' }, password: 'plainTextPassword', }, { id: 2, name: { first: 'John', last: 'Honest' }, password: 'txt' }, { id: 3, name: { first: 'Greg', last: 'Well' }, password: 'longer' }, ];
readonly gridSettings: GridSettings = { colHeaders: ['ID', 'First name', 'Last name', 'Password'], height: 'auto', autoWrapRow: true, autoWrapCol: true, columns: [ { data: 'id' }, { data: 'name.first' }, { data: 'name.last' }, { data: 'password', type: 'password', hashSymbol: '■' }, ] };}/* end-file */
/* file: app.module.ts */import { NgModule, ApplicationConfig } from '@angular/core';import { BrowserModule } from '@angular/platform-browser';import { registerAllModules } from 'handsontable/registry';import { HOT_GLOBAL_CONFIG, HotGlobalConfig, HotTableModule } from '@handsontable/angular-wrapper';import { CommonModule } from '@angular/common';import { NON_COMMERCIAL_LICENSE } from '@handsontable/angular-wrapper';/* start:skip-in-compilation */import { Example3PasswordCellTypeComponent } from './app.component';/* end:skip-in-compilation */
// register Handsontable's modulesregisterAllModules();
export const appConfig: ApplicationConfig = { providers: [ { provide: HOT_GLOBAL_CONFIG, useValue: { license: NON_COMMERCIAL_LICENSE, } as HotGlobalConfig } ],};
@NgModule({ imports: [ BrowserModule, HotTableModule, CommonModule ], declarations: [ Example3PasswordCellTypeComponent ], providers: [...appConfig.providers], bootstrap: [ Example3PasswordCellTypeComponent ]})
export class AppModule { }/* end-file */<div> <example3-password-cell-type></example3-password-cell-type></div>Related articles
Related guides
Configuration options
Core methods
Hooks